【发布时间】:2016-04-18 20:46:13
【问题描述】:
我在使用 rsync 命令时遇到了问题,该命令正在执行我没想到的额外工作。下面的命令应该只将 single 文件同步到目标服务器的目录。
但是,即使我尝试 --exclude 该目录中的所有其他文件,它也会将额外文件从 ${OUT_DIR}/make 目录复制到目标位置。
如何让 rsync 只复制目标文件?
eval rsync -azu --delete \
--include ${OUT_DIR}/make/file.mk \
--exclude ${OUT_DIR}/make \
${OUT_DIR}/make/file.mk
${DEST_USER}@${DEST_SVR}:$OUT_DIR_DEST/make
我已经尝试删除“额外”选项,但这样做时遇到了错误,因此尝试使上面的命令正常工作似乎是最好的做法。但是,当我尝试对其进行更改时,我得到了以下结果:
eval rsync \
${OUT_DIR}/make/file.mk
${DEST_USER}@${DEST_SVR}:$OUT_DIR_DEST/make
Incompatible options specified for inc-recursive connection.
rsync error: syntax or usage error (code 1) at compat.c(268) [sender=3.0.6]
删除 --delete 相关选项:
eval rsync -azu
${OUT_DIR}/make/file.mk
${DEST_USER}@${DEST_SVR}:$OUT_DIR_DEST/make
opening connection using: ssh -x -i ... rsync --server -vvulogDtprze.iLs .
$OUT_DIR_DEST/make
note: iconv_open("UTF-8", "UTF-8") succeeded.
(Client) Protocol versions: remote=30, negotiated=30
sending incremental file list
[sender] make_file(file.mk,*,0)
[sender] flist start=1, used=1, low=0, high=0
[sender] i=1 /OUTDIR/path file.mk mode=0100664 len=91 uid=300 gid=301 flags=5
send_file_list done
file list sent
send_files starting
ERROR: buffer overflow in recv_rules [receiver]
rsync error: error allocating core memory buffers (code 22) at util.c(123) [receiver=3.0.6]
rsync: connection unexpectedly closed (9 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.6]
_exit_cleanup(code=12, file=io.c, line=600): entered
_exit_cleanup(code=12, file=io.c, line=600): about to call exit(12)
我所做的大部分谷歌搜索都没有找到任何明显的解决方案。
【问题讨论】:
-
你为什么认为你需要所有这些论点?
-
如果我删除 --delete 选项,我会收到一条错误消息,指出“错误:recv_rules 中的缓冲区溢出”。如果我在没有参数的情况下设置它,我会收到错误“为 inc-recursive 连接指定的不兼容选项”
-
并不是我“相信”我需要它们。我想摆脱它们,但是,这样做只会导致更多问题。请参阅上面的更新说明...
-
$OUT_DIR包含什么? -
本地目录的规范路径和 $OUT_DIR_DEST 是远程目录的不同规范路径
标签: linux shell command-line rsync