Как переместить рекурсивные файлы из одного каталога в другой и файлы с тем же именем переименовать старый, добавив время его модификации

Мне нужно рекурсивно переместить все файлы с одного диска на другой и переименовать файлы с одинаковым путем / именем, если они отличаются от старых, добавив к имени файла время модификации.Файлы с одинаковым путем / именем перезаписываются. Размеры файлов варьируются от 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.

Пожалуйста, ПОМОГИТЕ !!!

0
14.01.2017, 22:07
2 ответа

Используйте rsync с --update и --backup в обоих направлениях:

-u, --update                skip files that are newer on the receiver
-b, --backup                make backups (see --suffix & --backup-dir)
0
28.01.2020, 04:48

Вы можете использовать "diff" для сравнения ФАЙЛОВ построчно. также посмотрите этот пост найдите mtime . Затем вы можете использовать команду mv, чтобы переместить старый файл

0
28.01.2020, 04:48

Теги

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