使用 rsync 保持两个文件夹同步

使用 rsync 保持两个文件夹同步

我有两个外部驱动器。其中一个驱动器名为“drive2”,它包含一个名为“Music”的文件夹。该文件夹具有以下结构:

drive2/
    /Music/
           Pink Floyd/
                      1982 - Album Name/
                                        01 - Track.flac
                                        02 - Track2.flac
                                        and so on..

因此,由于文件夹层次结构,我想我需要递归同步。

我需要将驱动器 2 中的整个Music文件夹复制到驱动器 1。我想我可以使用这样的东西:

rsync -av drive2/Music/ drive1/Music/

但是,在某些情况下,我会修改某些歌曲的元数据。这些元数据修改很小,就像更改专辑标题一样,这些修改不一定会改变 FLAC 文件的大小,但它们的 md5 指纹肯定会因为元数据的改变而改变。正确的?

我注意到,当我使用 时rsync -a,该rsync实用程序会注意到驱动器 2 上 FLAC 文件的元数据更改,并更新驱动器 1 上的文件以保持同步。仅传输更改的文件,这正是我想要的行为。在我看来,该-a (archive)标志意味着-u只更新更改的文件。

但是,我很好奇当rsync传输更新了元数据的文件时,旧文件是否会在drive1上完全被覆盖?我的意思是它们被完全替换了?在复制新文件之前是否删除了旧文件?

答案1

当 rsync 传输更新元数据的文件时,drive1 上的旧文件是否会被完全覆盖?

是的。默认行为是将当前位于目标位置的文件复制到临时位置。然后对该副本进行任何必要的更新。更新完成后,副本将被重命名为正确的文件,并删除前一个文件。

在复制新文件之前是否删除了旧文件?

对于正在更新的单个文件,默认情况下仅在复制/更新完成后才覆盖该文件。

对于从源中删除的文件,您可以控制是否在数据更新/传输之前、期间或之后删除此类文件。

答案2

Rsync 将旧文件转换为新文件,在此之前,接收器将知道两个文件块的校验和。

https://www.cs.tufts.edu/~nr/rsync.html#toc6

答案3

rsync是一个非常好的备份和一般复制工具,甚至可以通过网络进行复制,我想说比 Nautilus 好得多。

rsync同步设置并不简单,更容易备份。如果你愿意的话,你可以尝试一下unison,这是一个专用的同步工具。

相关内容