Эта конкретная проблема была просто ошибкой. Он исправлен и больше не должен появляться. Если это так, прокомментируйте здесь!
Вот мой грубый скрипт для проверки файлов в двух папках, и если у какого-либо файла есть проблема - скопируйте его. Я бы предложил использовать это после копирования файлов.
Основная идея - использовать hexdump для проверки файлов. Сценарий принимает два каталога в качестве входов. Ограничение: обрабатывает только файлы внутри каталога, а не подкаталоги (потому что я еще не знаю, как это сделать). Таким образом, вы можете использовать это, если у вас не так много папок, но если у вас несколько папок и подпапок, запуск сценария вручную для каждого каталога может быть утомительным. Пища для размышлений: создать список папок и вложенных папок для источника и назначения, а затем автоматизировать скрипт, проходящий через два списка.
Ограничение:
У меня есть tester2 как исходный каталог и testerdir в качестве места назначения, где я уже скопировал файлы. В строке 123 я запускаю скрипт для проверки файлов, которые копируются. В строке 124 я меняю содержимое файла tester2 / hello (измените его содержимое с «TEST» на «TESTER»). В строке 125 вы можете видеть, что скрипт обнаруживает, что файл hello был изменен / изменен в размере / коррумпированности и копирует файл заново. В строке 126 вы можете видеть, что файл hello в папке назначения соответствует папке источника.
Сценарий
#!/bin/bash
# Author: Serg Kolo
# Date: Mon May 25 01:19:59 MDT 2015
# Description: script to verify files in two directories
# written for http://askubuntu.com/q/627817/295286
copy_the_file ()
{
cp -f "$SOURCE_DIR"/"$filename" "$DEST_DIR"/"$filename"
}
if [ $# -ne 2 ]; then
printf "Usage: verify-files.sh SOURCE_DIR DEST_DIR"
exit 1
fi
SOURCE_DIR="$1"
DEST_DIR="$2"
IFS=":"
for filename in $(find "$SOURCE_DIR" -maxdepth 1 -type f -printf "%f:" | sed 's/.\///g' )
do
#echo "$filename"
#echo "$DEST_DIR"/"$filename"
if [ -e "$DEST_DIR"/"$filename" ];then
hexdump "$SOURCE_DIR"/"$filename" > .dump1
hexdump "$DEST_DIR"/"$filename" > .dump2
diff .dump1 .dump2 > /dev/null
if [ $? -eq 0 ];then
echo " "$filename" is OK "
else
echo ""$filename" has a problem"
copy_the_file
fi
else
copy_the_file
fi
done