在复制IF内容时,覆盖文件不一样

时间:2011-10-27 10:26:03

标签: linux deployment console copying mc

我有很多文件来自一方(A),还有很多其他文件来自其他地方(B)

我正在将A复制到B,有很多文件是相同的,但内容可能会有所不同!

通常我使用mc(午夜指挥官)来做,并选择“覆盖不同大小”。 但是存在大小相同但内容不同的情况。在这种情况下,mc将文件保存在B位置而不会覆盖它。

在mc覆盖对话框中有一个工作“更新”我不知道它在做什么?在帮助中没有这样的信息,也许这是一个解决方案?

所以我正在搜索解决方案,它可以帮助我将所有文件从A复制到B并覆盖B位置的文件(如果它们存在且内容与A不同)。

如果“B”位置的文件存在(同名)且内容不同,则每次都必须通过“A”位置的文件覆盖。

你知道任何解决方案吗?

4 个答案:

答案 0 :(得分:18)

您是否尝试过命令行:

cp -ru A/* B/

应该将所有已更改的文件(更新的时间戳)从目录A递归复制到目录B。

您还可以在命令行中使用-a而不是-r,具体取决于您要执行的操作。请参阅cp手册页。

答案 1 :(得分:11)

我使用rsync,因为这不依赖于文件日期,但实际上检查文件的内容是否已更改。例如:

#> rsync -cr <directory to copy FROM> <directory to copy TO>

Rsync将文件复制到远程主机或从远程主机复制文件,或在当前主机上本地复制文件(它不支持在两个远程主机之间复制文件)。

-c, --checksum    skip based on checksum, not mod-time & size
-r, --recursive   recurse into directories

有关更多选项和详细信息,请参阅man rsync

答案 2 :(得分:0)

您可能希望保留某种“索引”文件,该文件包含您在编写文件时创建的文件的SHA-1哈希值。然后,您可以计算“源”哈希并将其与索引文件中的“目标”哈希进行比较。这仅在文件写入目标的唯一方式时才有效。

答案 3 :(得分:0)

http://linux.math.tifr.res.in/manuals/man/mc.html

当您尝试复制或移动现有文件顶部的文件时,会显示替换对话框。该对话框显示两个文件的日期和大小。按Yes按钮覆盖文件,No按钮覆盖文件,alL按钮覆盖所有文件,nonE按钮永不覆盖,如果源文件比目标文件新,则覆盖更新按钮。您可以按Abort按钮

中止整个操作