Копирование списка test / path / to / files в список prod / path / to / files

Я хотел бы скопировать список файлов в форме test / path / to / file / filename.xyz в их соответствующее производство путь prod / путь / к / файлу / filename.xyz . Если путь тестирования и путь продукта совпадают, за исключением наличия «prod» вместо «test», могу ли я использовать следующую команду? Будет ли это перезаписано целевым файлом?

$ xargs -I % --arg-file=input.txt cp  /test/%  /prod/%
0
задан 5 April 2020 в 23:54

2 ответа

Я не совсем понимаю, как вы используете xargs, и особенно значение %.

А насчет cp, да, это приведет к перезаписи файлов назначения. Однако у cp есть несколько вариантов решения этой проблемы:

  • -b или --backup[=CONTROL] : сделать резервную копию каждого существующего целевого файла
  • -i или --interactive : подсказка перед перезаписью (отменяет предыдущую опцию -n)
  • -n или --no-clobber : не перезаписывать существующий файл
  • -u или --update : копировать только в том случае, если исходный файл новее целевого файла или когда целевой файл отсутствует

см. man cp для получения дополнительной информации.

Что касается вашей конечной цели, я думаю, что вы имеете в виду копирование некоторых файлов из «test/», перечисленных в вашем файле input.txt, по тому же пути в «prod/». Для этого лучше подходит rsync. Он имеет массу вариантов.Некоторые из тех, которые могут иметь значение:

 -b, --backup делать резервные копии (см. --suffix & --backup-dir)
--backup-dir=DIR создавать резервные копии в иерархию на основе DIR
--suffix=СУФФИКС резервной копии (по умолчанию ~ без --backup-dir)
--files-from=FILE прочитать список имен исходных файлов из FILE
-R, --relative` использовать относительные пути
-u, --update пропускать более новые файлы на приемнике
-n, --dry-run выполнить пробный запуск без внесения изменений
[и т.д]
0
ответ дан 8 April 2020 в 14:06

Использование параметра --files-from= с rsync позволяет указать точный список файлов для передачи:

$ rsync -av --ignore-existing \
  --files-from=input.txt test/ prod/
0
ответ дан 8 April 2020 в 17:47

Другие вопросы по тегам:

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