仅当目标上存在文件并且比目标更新时才递归复制目录

仅当目标上存在文件并且比目标更新时才递归复制目录

仅当目标上存在文件并且文件比目标上更新时,我们如何才能复制文件和/或目录,并且对于目录情况,它必须递归地
具有以下功能的复制

 $ 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/

额外的东西:

另外,您可以考虑使用-aswitch ,它等于-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:跳过在接收器上创建新文件

相关内容