web-dev-qa-db-fra.com

Comment puis-je copier un répertoire et le renommer dans la même commande?

Actuellement, j'exécute ces deux commandes pour créer une sauvegarde rapide du répertoire. Existe-t-il un moyen de combiner les deux commandes en une seule, de sorte que je copie et renomme le nouveau répertoire en une seule commande?

#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
15
AllisonC

Vous devriez pouvoir faire juste

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

Cependant , si le répertoire cible existe déjà, cela ajouterait la dernière partie du chemin source au chemin de destination, créant /tf/Custom_App_backups/Custom_App_2017-12-21/Custom_App, puis copiez le reste de l'arborescence à l'intérieur.

Pour éviter cela, utilisez /tf/Custom_App/. comme source. Bien sûr, dans ce cas, vous voudrez peut-être rm -r /tf/Custom_App_backups/Custom_App_2017-12-21 d'abord, si vous ne voulez pas que des fichiers plus anciens traînent après la copie.

La différence entre /some/dir et /some/dir/. a été discuté il y a quelque temps dans cp se comporte bizarrement quand. (point) ou .. (point dot) sont le répertoire source

21
ilkkachu

Alternativement, vous pouvez le faire comme ceci:

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

Cela vous permettra de spécifier votre emplacement personnalisé à l'avance. Notez également qu'il utilise le suffixe /. Cela vous permet de copier uniquement le contenu et d'exclure son dossier contenant - dans ce cas, c'est le Custom_app dossier.