仅当目标上存在文件并且文件比目标上更新时,我们如何才能复制文件和/或目录,并且对于目录情况,它必须递归地
具有以下功能的复制
$ ls -a ~/.config
gtk-2.0/
gtk-3.0/
SpeedCrunch/
$ ls -a /other/path/home/.config/
gtk-2.0/
gtk-3.0/
SpeedCrunch/
$ rsync -u --existing ~/.config /other/path/home/
skipping directory .
无法工作。
什么 Linux 实用程序以及如何执行/解决它?之前谢谢你
答案1
快的:
您忘记包含递归开关“-r”:
rsync -u --existing -r ~/.config /other/path/home/
额外的东西:
另外,您可以考虑使用-a
switch ,它等于-rlptgoD
包含递归,并且保留一些重要属性,如下所示:
- -r:递归到目录
- -l:将符号链接复制为符号链接
- -p:保留权限
- -t:保留修改时间
- -g:保留组
- -o:保留所有者(仅限超级用户)
- -D:保留与 --devices --specials 相同的特殊文件
使用以下方法进行测试:
mkdir src
touch src/file{1..3}
touch src/thefile
# Destination:
mkdir dst
touch dst/file{1..3}
touch -d 20201023 dst/thefile
# List all
free -D src dst
现在试试:
rsync -rt -uPv --existing src dst/
我用了:
- -r:递归到目录
- -t:保留修改时间
- -u:跳过接收器上较新的文件
- -P:显示传输过程中的进度
- -v:增加详细程度
- --existing:跳过在接收器上创建新文件