我有很多文件来自一方(A),还有很多其他文件来自其他地方(B)
我正在将A复制到B,有很多文件是相同的,但内容可能会有所不同!
通常我使用mc(午夜指挥官)来做,并选择“覆盖不同大小”。 但是存在大小相同但内容不同的情况。在这种情况下,mc将文件保存在B位置而不会覆盖它。
在mc覆盖对话框中有一个工作“更新”我不知道它在做什么?在帮助中没有这样的信息,也许这是一个解决方案?
所以我正在搜索解决方案,它可以帮助我将所有文件从A复制到B并覆盖B位置的文件(如果它们存在且内容与A不同)。
如果“B”位置的文件存在(同名)且内容不同,则每次都必须通过“A”位置的文件覆盖。
你知道任何解决方案吗?
答案 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按钮
中止整个操作