Повреждение файла с помощью rsync, несколько процессов rsync, переместилось/переименовало исходный файл

Вы использовали эту команду:

while read line; do 
   sed -i 's/'"$line"'/#%%#'"$line"'/' /system/etc/hosts;
done < modifyhostslist.txt

Пока строки в modifyhostslist.txt совпадают со строками в /system/etc/hosts, эта команда действительно должна работать.

Если строки выглядят одинаково, но команда все равно не работает, причиной может быть несоответствие между (невидимыми) окончаниями строк. DOS/Windows файлы имеют двухсимвольные строковые окончания, в то время как Unix и Mac используют односимвольные строковые окончания. Если проблема в этом, то решение - удалить оскорбительные символы. Так как hosts является системным файлом Unix, я ожидаю, что он имеет правильные строковые окончания, и поэтому нам нужно удалить лишние \r символы из файла modifyhostslist.txt. Это можно сделать следующим образом:

while read line; do 
   sed -i 's/'"$(echo "$line" | tr -d '\r')"'/#%%#'"$line"'/' /system/etc/hosts;
done < modifyhostslist.txt
1
14.04.2015, 06:47
1 ответ

Что именно здесь вопрос?

Вы должны добавить некоторые детали на свой шаблон вызова rsync , чтобы получить какую-либо значимую помощь. Я использовал rsync в течение многих лет без проблем. Я думаю, что безопасно сказать, что любая очевидная коррупция связана с неправильным использованием этого универсального инструмента. Если вы не пройдете -C , rsync проживает на основе времени и размера модификации. Даже если вы пройдете -C , rsync не будет обновляться, если вы также пройдете -U , и файл новее новее на приемнике. Если вы пройдете - в помещении , rsync обновляет файлы назначения на месте. Я просто даю их в качестве примеров, чтобы показать, что существует лота взаимодействия между вариантами rsync , и вам действительно нужно добавить детали о том, как вы вызываете rsync .

Я могу понять, что файл становится коррумпированным, если он написан, чтобы быть синхронизированным, но я не думаю, что он написан.

, а не угадывание, как насчет работы inotify (например, в содержащем каталог файла), чтобы определить, что файл обновляется только одним процессом в любое время?

0
28.01.2020, 01:42

Теги

Похожие вопросы