仅将*更改的/新文件*复制到不同的目录?

jus*_*tin 7 rsync

我有两个要保持同步的目录。

出于备份目的,我想运行 rsync 命令,以便它将新文件或更改的文件复制到单独的 USB 驱动器(或其他目录),我可以在完成同步之前查看该驱动器。

最后我想要:

  1. 原始目录
  2. 备份目录(除了查看那里有什么之外,此命令未触及)
  3. 单独的增量目录,仅包含新的/更改的文件。

这可能吗?

ale*_*xis 6

我相信更好的答案是https://serverfault.com/a/508272/173599。这里我引用一下相关命令:

rsync -aHxv --compare-dest=folder2/ folder1/ folder3/
Run Code Online (Sandbox Code Playgroud)

folder1与作为目的地进行比较folder2,但复制到folder3.


cry*_*rch 2

如果您只需要查看哪些文件会受到影响,而不需要查看它们之间的差异,则可以使用--dry-runrsync 选项。让我们设置一个沙坑进行测试:

$ cd /tmp
$ mkdir -p testing/{a,b}
$ cd testing/
$ touch a/hello a/world
$ ls a
hello
world
$ rsync -rv --append-verify a/ b
$ ls b
hello
world
Run Code Online (Sandbox Code Playgroud)

现在对以下内容进行修改a

$ echo 123 > a/hello 
$ touch a/abc
Run Code Online (Sandbox Code Playgroud)

现在使用rsync ... --dry-run ...看看会发生什么:

$ rsync -rv --append-verify --dry-run a/ b
sending incremental file list
abc
hello

sent 103 bytes  received 22 bytes  250.00 bytes/sec
total size is 4  speedup is 0.03 (DRY RUN)
Run Code Online (Sandbox Code Playgroud)

我们可以看到实际上没有进行任何更改b

$ ls b
hello
world
$ cat b/hello
$
Run Code Online (Sandbox Code Playgroud)

如果您需要查看目录之间的差异,可以使用diff

$ /bin/diff -aurN a b
diff -aurN a/hello b/hello
--- a/hello 2018-12-13 08:16:23.376761456 +1100
+++ b/hello 2018-12-13 08:16:11.306761686 +1100
@@ -1 +0,0 @@
-123
Run Code Online (Sandbox Code Playgroud)

如果b在远程机器上并且您需要查看差异,则需要创建 的本地副本b,然后就可以了diff

  • 这很有帮助,但我认为它没有回答问题。OP 希望直接执行操作,而不是收集执行该操作所需的信息。我相信更好的答案是https://serverfault.com/a/508272/173599。 (2认同)