Bash 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\\"

我有一个用于备份的脚本。问题是它有点慢。我想知道是否有一个diff命令在找到第一个差异时停止

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你尝试了什么实验?有很多因素可能会让它看起来好像没有,尽管我不确定它是否没有。