我想rsync
从本地计算机到服务器。 在一个目录不存在了,我要rsync
先在服务器上创建该目录。
我怎样才能做到这一点?
我想rsync
从本地计算机到服务器。 在一个目录不存在了,我要rsync
先在服务器上创建该目录。
我怎样才能做到这一点?
如果您有最后一片叶子目录更被创建,您可以运行一个单独ssh ... mkdir -p
第一,或者使用--rsync-path
伎俩在这里解释 :
rsync -a --rsync-path="mkdir -p /tmp/x/y/z/ && rsync" $source user@remote:/tmp/x/y/z/
或者使用--relative
选项由托尼的建议。 在这种情况下,你只能指定目的地的根,它必须存在,而不是源,这将创建的目录结构:
rsync -a --relative /new/x/y/z/ user@remote:/pre_existing/dir/
这样,您将结束与/ pre_existing / DIR /新/ X / Y / Z /
如果你想拥有“Y / Z /”创建,但里面的“新/ X /”,你可以添加./
你想要--relative
开始:
rsync -a --relative /new/x/./y/z/ user@remote:/pre_existing/dir/
将创建/ pre_existing / DIR / Y / Z /。
假设你使用ssh连接rsync的,怎么样才发送ssh命令:
ssh user@server mkdir -p existingdir/newdir
如果它已经存在,没有任何反应
该-R, --relative
选项将做到这一点。
例如:如果你想备份/var/named/chroot
并创建远程服务器上相同的目录结构,那么-R
将做到这一点。
这个工作对我来说:
rsync /dev/null node:existing-dir/new-dir/
我得到这个消息:
skipping non-regular file "null"
但我不担心有一个空目录游逛。
我不认为你可以用一个rsync命令去做,但你可以先“预创建”额外的目录是这样的:
rsync --recursive emptydir/ destination/newdir
其中“emptydir”是一个本地空目录(您可能需要首先创建一个临时目录)。
这是一个黑客攻击的一位,但它为我工作。
干杯
克里斯
这个答案使用其他的答案位,但我希望这将是作为对情况更清楚一点。 你永远不指定你rsyncing什么 - 一个目录条目或多个文件。
因此,让我们假设你是跨移动源目录项,而不仅仅是移动其中包含的文件。
比方说,你有一个本地调用目录data/myappdata/
你有这个子目录下的负载。 你有data/
你的目标机器上,但没有data/myappdata/
-这是很容易做到:
rsync -rvv /path/to/data/myappdata/ user@host:/remote/path/to/data/myappdata
你甚至可以使用不同的名称为远程目录:
rsync -rvv --recursive /path/to/data/myappdata user@host:/remote/path/to/data/newdirname
如果你只是把一些文件,而不是移动包含这些,那么你会做的目录条目:
rsync -rvv /path/to/data/myappdata/*.txt user@host:/remote/path/to/data/myappdata/
它会创建myappdata
目录为你远程机器放置在您的文件上。同样, data/
目录必须存在于远程计算机上。
顺便说一句,我使用的-rvv
标志是得到加倍详细的输出,因此是清楚它做什么,以及必要的递归行为。
只是为了告诉你什么是我(在Ubuntu 12.04 3.0.9)使用rsync时得到
$ rsync -rvv *.txt user@remote.machine:/tmp/newdir/
opening connection using: ssh -l user remote.machine rsync --server -vvre.iLsf . /tmp/newdir/
user@remote.machine's password:
sending incremental file list
created directory /tmp/newdir
delta-transmission enabled
bar.txt
foo.txt
total: matches=0 hash_hits=0 false_alarms=0 data=0
希望这会清除此一点点。
例如:
来自:/xxx/a/b/c/d/e/1.html
于:用户@远程:/pre_existing/dir/b/c/d/e/1.html
rsync的:
CD / XXX /一个/ && rsync的-auvR B / C / d / E /用户@远程:/ pre_existing /目录/