>>>>> Иван Лох <l...@1917.com> writes: >>>>> On Sun, Nov 06, 2011 at 12:35:06AM +0700, Ivan Shmakov wrote:
>> Несколько не в тему. Вместо удаления повторов, я обычно заменяю их >> одним файлом с несколькими именами (e. g., через ln(1)) >> предварительно проверив совпадение mtime и содержимого. (И, >> конечно, то, что это /различные/ файлы.) >> Эта операция, если выполняется правильно (в частности, что очевидно, >> файлы не должны меняться в процессе проверки), не допускает потери >> данных. > Да, но.... > $ echo "1:1" >site1/passwd > $ echo "1:1" >site2/passwd > $ Поискали > $ rm site2/passwd && ln site1/passwd site2/passwd rm(1) не требуется. ln(1) атомарно изменит второе имя файла так, чтобы оно ссылалось на тот же файл, что и первое. > $ ... > $ echo "2:2" >site2/passwd > $ cat site1/passwd > Оп! Этого ли Вы хотели? Во-первых, такого рода замену я выполняю только в тех директориях, в которых файлы de facto являются read-only. Вроде ~/public/files/ (который у меня вместо ~/Downloads/.) Во-вторых: $ echo 2:2 > site2/passwd.tmp && mv -- site2/passwd.tmp site2/passwd По крайней мере так поступают программы, вроде mv(1), rsync(1), да и некоторые текстовые редакторы, полагаю, при соответствующей настройке. В противном случае несложно оказаться в ситуации, когда старое содержимое уже удалено, а новое не удалось записать по причине, e. g., отсутствия свободного пространства на ФС. Поэтому, такое поведение программы для меня — повод написать отчет в BTS. -- FSF associate member #7257
pgpBjkW7B4SYN.pgp
Description: PGP signature