У меня возникла проблема с атрибутами файлов, так как я изменил файловую систему своей компании со старой Ubuntu 12 на Synology NAS.
Я изначально смонтировал общие NFS на свою старую файловую систему, потом с cp все скопировал, все было ок Но я забыл сохранить атрибуты, и мы потеряли особенно дату, даты стали датой копирования, а не реальной датой.
Я нашел команду rsync rsync -vrt --size-only /src /dest Но некоторые файлы были изменены с момента копирования, и команда перезаписывает их...
Например, я попытался создать файл в старой файловой системе, скопировать его в новую систему Synology, а затем изменить файл в системе Synology. Когда я использую rsync, файл стирается и заменяется старой версией.
Я ищу команду для копирования временных меток для файлов только в том случае, если файл имеет точно такой же размер (не был изменен)
Неважно, если это займет много времени
Редактировать :
Я попробовал предложенное решение с тестовым каталогом, без ошибок, но без каких-либо изменений:
old_base=/дом/самба/акции/проекты/тест
new_base=/mnt/NAS
cp $old_base $new_base -rv
`/home/samba/shares/projects/test/1201.txt' -> `/mnt/NAS/test/1201.txt'
`/home/samba/shares/projects/test/test.txt' -> `/mnt/NAS/test/test.txt'
`/home/samba/shares/projects/test/1200.txt' -> `/mnt/NAS/test/1200.txt'
`/home/samba/shares/projects/test/1202/1202.txt' -> `/mnt/NAS/test/1202/1202.txt'
Теперь моя новая база такая же, как и старая, но без временной метки, как в реальности.
Я изменяю один файл, добавляя содержимое, чтобы имитировать отредактированный файл, так как я скопировал все
Затем я применяю ваше решение:
root@xx:/mnt/NAS/test# cd $old_base; найти . -тип f | xargs лс -с | sort -k 2,2 >/tmp/старый
root@xx:/home/samba/shares/projects/test# cd $new_base; найти . -тип f | xargs лс -с | sort -k 2,2 >/tmp/новый
root@xx:/mnt/NAS# comm -12 /tmp/old /tmp/new | при чтении размера имени файла; коснитесь ${new_base}/${имя_файла} -r ${old_base}/${имя_файла}; сделано
comm: файл 2 не отсортирован
comm: файл 1 не отсортирован
У меня нет ошибки, но и никаких изменений
(я не уверен, что вы имеете в виду под ${filename}, но я также пытался заменить его на ${новая_база}/*
Редактировать: 22/07
У меня нет никакого результата, когда я использую
comm -12 --nocheck-order /tmp/старый /tmp/новый