rsync + переименование скопированных файлов

С , и :

while IFS= read -r line; do
    echo "$line"
done < <(p4 opened -c $changelist)

См. http://mywiki.wooledge.org/ProcessSubstitution и http://mywiki.wooledge.org/BashFAQ/024

Не используя одну из этих оболочек (как Joseph R. сказал в комментариях), используйте простой канал:

p4 opened -c $changelist | while IFS= read -r line; do
    echo "$line"
done

3
13.10.2015, 11:12
2 ответа

Rsync не может делать это на уровне отдельных файлов, но в некоторой степени поддерживает создание целых деревьев. Например.:

/path/to/dst-2019-07-31/file
/path/to/dst-2019-07-30/file
/path/to/dst-2019-07-29/file
...

Есть три варианта:

  • --compare-dest=DIRгде в новом каталоге создаются только новые файлы. Вероятно, это не то, что вам нужно, потому что вам придется перечислить все каталоги предыдущей версии.
  • --copy-dest=DIR, где неизмененные файлы копируются из DIRв место назначения, а не передаются из источника.
  • --link-dest=DIR— то же самое, но использует гораздо меньше дискового пространства в месте назначения, поскольку не дублирует содержимое файла.

Вы используете это так:

rsync -a --link-dest=/path/to/dst-$YESTERDAY /path/to/src /path/to/dst-$TODAY
1
27.01.2020, 21:31

На самом деле можно, но как-то халтурно.. и только как суффикс.

Как вы прочитали в комментариях, --suffixпредназначен для резервного копирования перезаписанных файлов. Таким образом, вы выполняете rsync одни и те же файлы из источника в пункт назначения, заставляя rsync перезаписывать (-I)-, но только если исходный файл(-u)новее (, чего никогда не бывает ), и используя параметр -b, --backupи определяя резервный каталог и суффикс.

rsync -Iu --backup --suffix='_2015_09_10' --backup-dir=/path/to/dst /path/to/src/file /path/to/src/file

1
27.01.2020, 21:31

Теги

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