Рейтинг:0

Rsync: сохранить дату после копирования

флаг cn

У меня возникла проблема с атрибутами файлов, так как я изменил файловую систему своей компании со старой 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/новый
флаг cn
comm не работает, так как ищет файлы для редактирования по первому полю. Вы *можете* просто использовать флаг --nocheck-order для связи.Или см. дополнительные формулировки в моем ответе.
Рейтинг:0
флаг cn

Схема того, как я буду действовать: Перечислите две иерархии в файл с размером. Отсортируйте и сравните файлы по размеру с «comm -12», чтобы получить список имен файлов с одинаковым размером. Затем вы можете либо создать список временных меток и сравнить, либо просто передать этот список в команду «touch -r», чтобы дублировать временные метки. Пожалуйста, не копируйте и не вставляйте эти команды вслепую — убедитесь, что вы понимаете, что они пытаются сделать.

Если у вас нет большого количества файлов, это не займет много времени.

Некоторые простые (непроверенные) команды, которые должны помочь:

old_base = базовый каталог иерархии со старыми файлами, желаемые временные метки

new_base = базовый каталог иерархии с новыми файлами, неверными отметками времени

компакт-диск $old_base; найти . -тип f | xargs лс -с | при чтении размера имени файла; сделать эхо "${имя файла} ${размер}"; сделано | сортировать >/tmp/old_list

cd $ новая_база; найти . -тип f | xargs лс -с | при чтении размера имени файла; сделать эхо "${имя файла} ${размер}"; сделано | сортировать >/tmp/new_list

Попробуйте просто сделать связь -12 /tmp/старый_список /tmp/новый_список и глядя на вывод. Если временные метки нужны не именам файлов, нам нужно выяснить, почему нет.

связь -12 /tmp/старый_список /tmp/новый_список | при чтении размера имени файла; коснитесь ${new_base}/${имя_файла} -r ${old_base}/${имя_файла}; сделано

Mmmax avatar
флаг cn
Я не понимаю как, ведь у меня миллионы файлов, 6тб Что такое новая_база? Общий ресурс синологии nfs?
флаг cn
Я отредактирую свой пост, чтобы предоставить больше контекста.
Mmmax avatar
флаг cn
Я отредактировал свой пост с результатом моей попытки
флаг cn
Очень хорошо сначала сделать тестовый пример, ммакс.
Mmmax avatar
флаг cn
Я добавил -nocheck-order в команду comm, теперь у меня нет ни ошибок, ни возврата, но никаких изменений в моей тестовой папке.
флаг cn
@Мммакс.посмотрите на мой (отредактированный) пост. попробуйте просто "comm -12 /tmp/old_list /tmp/new_list" и посмотрите, получите ли вы что-нибудь.
Mmmax avatar
флаг cn
Нет результата с этой командой (исходное сообщение отредактировано)
флаг cn
@Mmmax Пожалуйста, попробуйте посмотреть, что означают мои предложения и что они пытаются сделать. Правильно ли выводятся два списка? Комм сообщает об ошибках? Вы поставили интересную задачу, и я хотел бы помочь, но вы должны дать мне больше работы, чтобы помочь вам.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.