我正在尝试使用 备份另一个驱动器上的一些文件rsync
。
作为测试用例,我正在尝试以下命令:
rsync -Rav --delete --stats /home/my_user/bin* "$dest"
$HOME
此命令将把存在于我的目录中且名称为 ~/bin
、~/binb
、~/bin1
、等的文件和目录(及其内容)复制~/bin2
到目标。
~/bin1
但是,当我删除任何名为或的文件或目录时~/bin2
,目标中的文件或目录不会也删除。唯一可行的方法是,如果目录中有一个文件,并且删除了此文件,则目标中的文件也会被删除(但删除整个~/bin2/file1
目录时则不会)。~/bin2/
显然,这个问题是由于 shell在执行命令时扩展到我的目录中/home/my_user/bin*
以 开头的所有文件和目录名而导致的。因此,我尝试像这样引用源代码,但在这种情况下我得到了错误:bin
$HOME
rsync
"/home/my_user/bin*"
rsync: [sender] link_stat "/home/my_user/bin*" failed: No such file or directory (2)
需要什么选项,那么,我可以对源使用通配符,并且在目标中我也将获得源文件和目录结构的精确副本?
笔记:rsync version 3.2.3 protocol version 31
答案1
您可以使用--include
/--exclude
喜欢:
rsync -Rav --delete \
--include="/home/my_user/bin*" \
--exclude="/home/my_user/*" \
/home/my_user/ "$dest"
但我认为如果采用不同的结构,只同步一个父目录会更容易。