我有远程文件夹 (FD) 的旧副本,user@IP:/folder1/folder2/folder3/FD/
其中包含子文件夹 fol1、fol2、...、
user@IP:/folder1/folder2/folder3/FD/
|__fol1
|__fol2
|__ ...
包含许多文件。我的本地文件夹具有相同的名称和相同的子文件夹
/localfd1/localfd2/FD/
|__fol1
|__fol2
|__ ...
如何从远程子文件夹仅复制本地子文件夹中的较新文件? scp 会复制整个文件夹,但我只想要新文件。
更多分析:我拥有的远程文件夹的旧副本具有以下结构:
/localfd1/localfd2/FD/
|__fol1
|_old file1
|_old file2
|_old file3
|__fol2
|_old file4
|_old file5
NEW_REMOTE 文件夹现在的形式为:
user@IP:/folder1/folder2/folder3/FD/
|__fol1
|_old file3
|_new file_a
|_new file_b
|__fol2
|_old file5
|_new file_c
(为了节省空间删除了远程文件夹中的一些文件+添加了新文件)。
我想从 NEW_REMOTE 文件夹(fol1 和 fol2)仅复制本地文件夹中的 NEW 文件。所以我的新本地文件夹将具有以下形式:
/localfd1/localfd2/FD/
|__fol1
|_old file1
|_old file2
|_old file3
|_new file_a
|_new file_b
|__fol2
|_old file4
|_old file5
|_new file_c
答案1
您可以使用
rsync -avh --更新用户@IP:/folder1/folder2/folder3/FD/ /localfd1/localfd2/FD/从
man rsync
:
这会强制 rsync 跳过目标上存在且修改时间比源文件更新的任何文件。 (如果现有目标文件的修改时间与源文件的修改时间相同,则如果大小不同,则会更新该文件。)