将 /home/etc 恢复到 /etc

将 /home/etc 恢复到 /etc

我需要将备份文件从复制到/mnt/backup/etc/etc 所以这cp/mnt/backup/etc*就是我正在考虑的命令。

然而,经验告诉我,这cp/mnt/backup/etc*可能是对文件系统的破坏性命令,因为来自存储库的文件可能存在差异,这些差异不在 CentOS7 版本的全新安装中,但存在/mnt/backup/etc*或我不知道的其他差异。

我正在考虑一个命令,该命令将比较两个目录的文件,并在文件存在差异时输出。从那里我可以确定哪些文件/mnt/backup/etc不恢复(如果有)。

不知道该怎么做,已经有一段时间了。我想我使用该wc命令来输出文件之间的差异,但不确定如何比较两个文件之间的差异。

答案1

有多种选项可以预先进行比较:

  • rsync

    rsync使用该标志运行-n将首先执行“试运行”,使您能够查看将复制哪些文件,以便您可以在必要时进行手动调整。

    rsync -nvahHSEi /mnt/backup/etc/* /etc
    

    将是试运行,并且还将输出更多信息为什么某个文件需要复制(大小/修改日期不同......)。如果差异足够小,您可以重新运行该命令,而无需n全自动执行实际的“恢复”操作。

  • diff

    diff不仅可以使用两个文件运行,还可以使用两个文件运行目录作为参数,它将显示哪些文件不同,它们的内容不同(至少对于文本文件),以及哪些文件仅存在于两个路径之一中。与选项一起使用-r以递归地下降到子目录。正如@Olivier Dulac 所指出的,您可以首先diff -q在目录上运行以仅显示不同文件的列表(没有实际差异)。

  • meld

    这是一个基于 GUI 的比较工具,还允许您确定两个目录之间的差异。

相关内容