Bash diff,在找到第一个差异时停止
我有一个用于备份的脚本。问题是它有点慢。我想知道是否有一个diff命令在找到第一个差异时停止Bash diff,在找到第一个差异时停止,bash,diff,Bash,Diff,我有一个用于备份的脚本。问题是它有点慢。我想知道是否有一个diff命令在找到第一个差异时停止 DocumentsFiles=("Books" "Comics" "Distros" "Emulators" "Facturas" "Facultad" "Laboral" "Mods" "Music" "Paintings" "Projects" "Scripts" "Tesis" "Torrents" "Utilities") OriginDocumentsFile="E:\Documents\\"
DocumentsFiles=("Books" "Comics" "Distros" "Emulators" "Facturas" "Facultad" "Laboral" "Mods" "Music" "Paintings" "Projects" "Scripts" "Tesis" "Torrents" "Utilities")
OriginDocumentsFile="E:\Documents\\"
DestinationDocumentsFile="F:\Files\Documents\\"
## loop file to file and copy in backup
for directory in "${DocumentsFiles[@]}"
do
RealOrigin="${OriginDocumentsFile}${directory}"
RealDestination="${DestinationDocumentsFile}${directory}"
echo $directory
if [ -a "$RealDestination" ]; then
echo ok
if diff -r $RealOrigin $RealDestination; then
echo "${directory} are equal!"
else
rm -rfv $RealDestination
cp -ruv $RealOrigin "${DestinationDocumentsFile}"
fi
else
cp -ruv $RealOrigin "${DestinationDocumentsFile}"
fi
done
diff-q
报告“仅当文件不同时”(per),因此我相信它会在第一次差异后停止
DocumentsFiles=("Books" "Comics" "Distros" "Emulators" "Facturas" "Facultad" "Laboral" "Mods" "Music" "Paintings" "Projects" "Scripts" "Tesis" "Torrents" "Utilities")
OriginDocumentsFile="E:\Documents\\"
DestinationDocumentsFile="F:\Files\Documents\\"
## loop file to file and copy in backup
for directory in "${DocumentsFiles[@]}"
do
RealOrigin="${OriginDocumentsFile}${directory}"
RealDestination="${DestinationDocumentsFile}${directory}"
echo $directory
if [ -a "$RealDestination" ]; then
echo ok
if diff -r $RealOrigin $RealDestination; then
echo "${directory} are equal!"
else
rm -rfv $RealDestination
cp -ruv $RealOrigin "${DestinationDocumentsFile}"
fi
else
cp -ruv $RealOrigin "${DestinationDocumentsFile}"
fi
done
但这是一个小问题。确实,您需要一个更好的备份程序,如rsync:
它以其增量传输算法而闻名,该算法通过只发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量
From
diff-q
报告“仅当文件不同时”(per),因此我相信它会在第一次差异后停止
DocumentsFiles=("Books" "Comics" "Distros" "Emulators" "Facturas" "Facultad" "Laboral" "Mods" "Music" "Paintings" "Projects" "Scripts" "Tesis" "Torrents" "Utilities")
OriginDocumentsFile="E:\Documents\\"
DestinationDocumentsFile="F:\Files\Documents\\"
## loop file to file and copy in backup
for directory in "${DocumentsFiles[@]}"
do
RealOrigin="${OriginDocumentsFile}${directory}"
RealDestination="${DestinationDocumentsFile}${directory}"
echo $directory
if [ -a "$RealDestination" ]; then
echo ok
if diff -r $RealOrigin $RealDestination; then
echo "${directory} are equal!"
else
rm -rfv $RealDestination
cp -ruv $RealOrigin "${DestinationDocumentsFile}"
fi
else
cp -ruv $RealOrigin "${DestinationDocumentsFile}"
fi
done
但这是一个小问题。确实,您需要一个更好的备份程序,如rsync:
它以其增量传输算法而闻名,该算法通过只发送源文件和目标中现有文件之间的差异来减少通过网络发送的数据量
从解决您的问题了吗?解决您的问题了吗?检查
borgbackup
谢谢各位,我当时正在使用windows,这就是我不使用rsync的原因。但现在我意识到我可以使用Linux子系统并得到同样的结果。我的实验似乎证明了diff-q
不会“在第一次差异后停止”,而且在文档中我看不到任何东西可以建议它应该停止。@mike你尝试了什么实验?有很多因素可能会让它看起来好像没有,尽管我不确定它是否没有。检查borgbackup
谢谢,伙计们,我使用的是windows,这就是我不使用rsync的原因。但现在我意识到我可以使用Linux子系统并得到同样的结果。我的实验似乎证明了diff-q
不会“在第一次差异后停止”,而且在文档中我看不到任何东西可以建议它应该停止。@mike你尝试了什么实验?有很多因素可能会让它看起来好像没有,尽管我不确定它是否没有。