Fed*_*eli 6 command-line backup rsync 21.10
我正在尝试使用 备份另一个驱动器上的一些文件rsync。
作为测试用例,我正在尝试以下命令:
rsync -Rav --delete --stats /home/my_user/bin* "$dest"
Run Code Online (Sandbox Code Playgroud)
$HOME此命令会将我的目录中存在且名称如 ~/bin、~/binb、~/bin1、等的文件和目录(及其内容)复制~/bin2到目标。
~/bin1但是,当我删除任何名为或 的文件或目录时~/bin2,这些文件或目录也不会在目标中删除。唯一有效的是,当目录中有一个文件~/bin2/file1并且该文件被删除时,该文件也会在目标中被删除(但在目录被完全删除的情况下不会~/bin2/)。
显然,这个问题是由于执行命令时shell 扩展到我的目录中/home/my_user/bin*以该名称开头的所有文件和目录名称而造成的。因此,我尝试引用来源,但在这种情况下我收到错误:bin$HOMErsync"/home/my_user/bin*"
rsync: [sender] link_stat "/home/my_user/bin*" failed: No such file or directory (2)
Run Code Online (Sandbox Code Playgroud)
需要哪些选项,以便我可以对源使用通配符,并且我将在目标中获得源文件和目录结构的精确副本?
笔记:rsync version 3.2.3 protocol version 31
您可以使用--include/--exclude像:
rsync -Rav --delete \
--include="/home/my_user/bin*" \
--exclude="/home/my_user/*" \
/home/my_user/ "$dest"
Run Code Online (Sandbox Code Playgroud)
但我认为采用不同的结构会更容易,您只能同步一个父目录。