Мне нужно рекурсивно переместить все файлы с одного диска на другой и переименовать файлы с одинаковым путем / именем, если они отличаются от старых, добавив к имени файла время модификации.Файлы с одинаковым путем / именем перезаписываются. Размеры файлов варьируются от 5 КБ до 500 МБ.
Вот дерево тестовой среды, которое я создал, и некоторые комментарии:
/bmrlbackup/drive1/
`-- user001
`-- directory1
`-- project001
|-- file000 #identical
|-- file001 #older same name
|-- file0011 #unique
|-- phase1
| |-- file000 #identical
| |-- file110 #unique
| |-- file999 #newer same name
| `-- phase11
| `-- file111 #unique
`-- phase2
`-- file120 #unique
/bmrlbackup/drive2/
`-- user002
`-- directory2
`-- project001
|-- file000 #identical
|-- file001 #newer same name
|-- file0012 #unique
|-- phase1
| |-- file000 #identical
| |-- file210 #unique
| `-- file999 #older same name
`-- phase2
|-- file220 #unique
`-- phase21
`-- file221 #unique
Результат для rsync для перемещения уникальных файлов:
#rsync -a --ignore-existing --remove-source-files $sd1/ $dd1/
project001/
project001/file0011
project001/phase1/
project001/phase1/file110
project001/phase1/phase11/
project001/phase1/phase11/file111
project001/phase2/
project001/phase2/file120
Остальные файлы, которые нужно переместить:
#remm="ls -1 $(find $sd1/ -type f)"
/bmrlbackup/drive1/user001/directory1/project001/file000
/bmrlbackup/drive1/user001/directory1/project001/file001
/bmrlbackup/drive1/user001/directory1/project001/phase1/file000
/bmrlbackup/drive1/user001/directory1/project001/phase1/file999
Здесь есть файлы которые одинаковы в обоих местах, и их необходимо переместить и перезаписать место назначения:
/bmrlbackup/drive1/user001/directory1/project001/file000
/bmrlbackup/drive1/user001/directory1/project001/phase1/file000
И здесь есть файлы с одинаковыми именами, но разным содержанием:
/bmrlbackup/drive1/user001/directory1/project001/file001
/bmrlbackup/drive1/user001/directory1/project001/phase1/file999
Файлы с «одинаковым именем, разным содержанием» необходимо сравнить и более старый необходимо переместить, переименовать с добавлением даты и времени изменения, поэтому, если источник более новый, добавьте имя файла назначения и переместите источник, а если источник более старый, добавьте имя источника и переместите добавленное имя источник.
Результатом этого процесса в конечном итоге будет перемещение всех файлов с диска 1 на диск 2.
Пожалуйста, ПОМОГИТЕ !!!
Используйте rsync с --update и --backup в обоих направлениях:
-u, --update skip files that are newer on the receiver
-b, --backup make backups (see --suffix & --backup-dir)
Вы можете использовать "diff" для сравнения ФАЙЛОВ построчно. также посмотрите этот пост найдите mtime . Затем вы можете использовать команду mv, чтобы переместить старый файл