Как я могу скопировать каталог и переименовать его в той же команде?

15

В настоящее время я запускаю эти две команды для создания быстрой резервной копии каталога. Есть ли способ объединить две команды в одну, чтобы я копировал и переименовывал новый каталог в одну команду?

#cp -R /tf/Custom_App /tf/Custom_App_backups/
#mv /tf/Custom_App_backups/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
AllisonC
источник
1
cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21
jesse_b
Как насчет определения псевдонима или функции для этих двух вещей;)
LinuxSecurityFreak

Ответы:

21

Вы должны быть в состоянии сделать только

cp -R /tf/Custom_App /tf/Custom_App_backups/Custom_App_2017-12-21

Однако , если целевой каталог уже существует, это добавит заключительную часть исходного пути к пути назначения, создав /tf/Custom_App_backups/Custom_App_2017-12-21/Custom_App, а затем скопировав оставшуюся часть дерева в нем.

Чтобы предотвратить это, используйте /tf/Custom_App/.в качестве источника. Конечно, в этом случае вам может понадобиться rm -r /tf/Custom_App_backups/Custom_App_2017-12-21сначала, если вы не хотите, чтобы старые файлы лежали там после копии.

Разница между /some/dirи /some/dir/.обсуждавшаяся некоторое время назад в cp ведет себя странно, когда. (точка) или .. (точка) - исходный каталог

ilkkachu
источник
Альтернативой передаче .в качестве исходного каталога является использование -Tфлага для указания cpперезаписать место назначения вместо создания нового члена внутри него.
Тоби Спейт
@TobySpeight, ... в GNU cp.
ilkkachu
1
/tf/Custom_app/.Трюк только то , что мне было нужно.
Мартин Боннер поддерживает Монику
cp -aтоже работает.
flow2k
1
@ flow2k, в частности, утилиты GNU содержат множество нестандартных опций, многие из которых очень полезны. cp -aконечно, появляется также, например, во FreeBSD и OpenBSD, но это все еще не стандартная функция, то есть не указанная в POSIX . ( cp -Tэто было упомянуто ранее, кажется, GNUism, это не в POSIX, и не в BSD, насколько я вижу.)
ilkkachu
1

Кроме того, вы можете сделать это так:

mkdir /tf/Custom_App_backups/Custom_App_2017-12-21 # prepare the target location
cp -R /tf/Custom_app/. /tf/Custom_App_backups/Custom_App_2017-12-21 # copy only the contents

Это позволит вам заранее указать свое местоположение. Также обратите внимание, что он использует суффикс. /.Это позволяет вам только копировать содержимое и исключать содержащую его папку - в данном случае это Custom_appпапка.

Абель Мелькиадес Каллехо
источник