我想使用 cp 维护许多文件和目录的镜像副本,但我无法让它发挥作用(类似于带有开关的 MS XCOPY)

0 command-line backup cp

我试图将 SOURCE 复制到 DESTINATION,以便 DESTINATION 与 SOURCE 相同。

请注意,SOURCE 为 89GB,包含 26k 文件和数百个文件夹,因此当可能只有 5 或 10 个文件发生更改时,进行整个复制是不切实际的。

我意识到我可以使用增量备份应用程序,但我需要可以直接访问和编辑文件,因为 DESTINATION 是插入另一台计算机(也运行 Ubuntu)的 USB 硬盘驱动器。

我已经尝试了以下多种变体,但我无法让它工作。它不会递归子目录或识别更改的文件。大多数情况下,处理器返回到一个打开的命令行,就好像它刚刚成功完成了操作一样。

我认为问题可能与包含空格的文件夹和文件名有关。如果我创建了这些文件夹和文件,我会使用_代替" ",但这不是一个选项。所有文件都可以在 Ubuntu 应用程序中使用。我已经使用了-v开关,但没有打印任何内容。

在 Ubuntu 20.04 中,我在 SOURCE 目录中输入以下内容:

cp "*.*" -i -r -u -v /media/kevin/'MyDocs Backup'/Documents
Run Code Online (Sandbox Code Playgroud)

我也使用显式 SOURCENAME 尝试过它,但效果更少。

如果它有助于传达我的问题,则 XCOPY 等效项来自于:

XCOPY "*.*" K:\Documents /d /s /c
Run Code Online (Sandbox Code Playgroud)

pLu*_*umo 5

使用rsync

Rsync 是一种快速且非常通用的文件复制工具。它可以在本地、通过任何远程 shell 复制到另一台主机或从远程 rsync 守护程序复制到/从另一个主机复制。它提供了大量选项来控制其行为的各个方面,并允许非常灵活地指定要复制的文件集。 它以其增量传输算法而闻名,该算法通过仅发送源文件与目标中现有文件之间的差异来减少通过网络发送的数据量。 Rsync 广泛用于备份和镜像,并作为日常使用的改进复制命令。

rsync -av SOURCE DESTINATION
Run Code Online (Sandbox Code Playgroud)
  • -a 表示“归档模式”,它是其他几个选项的聚合

    “归档模式 [...] 确保符号链接、设备、属性、权限、所有权等在传输中得到保留。”)

  • -v 表示“详细”,因此我们在终端上看到已复制内容的状态。

检查man rsync更多详细信息和选项。


需要注意的区别SOURCESOURCE/

源上的尾部斜杠更改此行为以避免在目标上创建额外的目录级别。您可以将源上的尾随 / 视为“复制此目录的内容”而不是“按名称复制目录”