web-dev-qa-db-fra.com

comment copier un répertoire et son contenu dans un nouvel emplacement sous un nouveau nom de répertoire?

Je suis nouveau sur la ligne de commande Linux et j'essaie de comprendre la commande copy pour le moment.

Quelqu'un peut-il me dire s'il est possible de copier un répertoire avec ses sous-répertoires et les fichiers associés dans un nouveau répertoire portant un nouveau nom, par exemple. répertoire_backup?

Merci pour toute aide à l'avance

39
Edmuntu

Vous utilisez -r (copie récursive) et spécifiez le nouveau nom

cp -r /path/to/directory /path/to/location/new-name

remplacez par les chemins réels ... par exemple pour copier stuffde mon répertoire personnel dans un répertoire existantbackupet nommez le nouveau répertoire stuff-backup (si ce répertoire existe déjà, notez que stuffsera copié - en le, ne l'écrase pas).

cp -r ~/stuff ~/backup/stuff-backup

~ est un raccourci pour votre répertoire personnel /home/$USER ou /home/zanna dans mon cas. Vous pouvez l'omettre si le répertoire de travail actuel est votre répertoire personnel. Vous pouvez le voir dans votre invite.

zanna@monster:~$
              ^--the ~ here is where I am - home!

Vous pouvez ajouter l'indicateur détaillé -v pour que cprapporte chaque copie en cours d'exécution ...

$ cp -vr stuff backup/stuff-backup
'stuff/thing1' -> 'backup/stuff-backup/thing1'
'stuff/thing2' -> 'backup/stuff-backup/thing2
...
51
Zanna

La commande dont vous avez besoin est simplement cp, qui signifie "copier".

Vous pouvez l'utiliser par exemple avec l'une des syntaxes suivantes:

cp SOURCEFILE TARGETFILE
cp SOURCEFILE TARGETDIRECTORY

La première variante vous permet de spécifier un nouveau nom de fichier pour le fichier cible, tandis que la seconde variante en crée une copie avec le même nom dans le répertoire cible. Vous devez bien sûr remplacer les remplaçants en lettres capitales par des chemins valides en premier.

Cependant, cp opère par défaut sur les fichiers uniquement, pas sur les répertoires. Pour le faire copier un répertoire complet avec tout son contenu de manière récursive, vous devez ajouter l'option -r:

cp -r SOURCEDIRECTORY TARGETDIRECTORY

Vous pouvez en savoir plus sur la commande cp en tapant man cp dans votre terminal.

9
Byte Commander

En guise d'alternative à la commande cp généralement utile, vous pouvez utiliser rsync, qui présente l'avantage supplémentaire de répliquer les autorisations/horodatages de la structure de répertoires d'origine:

rsync -av dir/ newdir

-a archive -v verbose

notez la barre oblique après le répertoire source.

6
slowko

cp est la commande qui exécute la fonction recherchée. Cela signifie copie et c'est exactement ce que vous faites. La commande qui fonctionnerait pour vous dans cette situation est

cp -R source/ destination/

Cela copierait le dossier source/ et tous ses sous-répertoires dans destination/.

Si destination/ n'existe pas, il sera créé.

L'indicateur -R signifie récursif, ce qui indique à cp de copier tous les sous-répertoires.

4
Owen Hines

Je trouve qu'il est plus facile de passer au répertoire que je copie en premier. Pour cet exemple, passez à un répertoire que tout le monde a appelé /boot. Tout le monde peut copier et coller les commandes ci-dessous dans son terminal.

cd /boot
Sudo mkdir /boot_backup
Sudo cp -r . /boot_backup
du /boot_backup -h

752K    /boot_backup/extlinux/themes/debian-wheezy
756K    /boot_backup/extlinux/themes
832K    /boot_backup/extlinux
2.5M    /boot_backup/grub/i386-pc
20K     /boot_backup/grub/locale
2.3M    /boot_backup/grub/fonts
7.2M    /boot_backup/grub
565M    /boot_backup

Pour la commande cp, le répertoire en cours est identifié par ., qui est le répertoire /boot que nous avons changé. L'option -r rend récursif l'inclusion de tous les sous-répertoires.

Pour vous assurer que tout fonctionne correctement, exécutez du pour répertorier tous les sous-répertoires et la taille totale des fichiers dans le nouveau répertoire /boot_backup dans ce cas.

Une fois cette visite guidée terminée, utilisez: Sudo rm -r /boot_backup pour supprimer le nouveau répertoire et ses sous-répertoires.

4
WinEunuuchs2Unix

Vous pouvez utiliser la commande ci-dessous pour copier le répertoire d'un emplacement vers un autre sous-répertoire.

cp -Rvp /home/edmuntu/data /home/edmuntu/mydata/

Explication de commande:

  • -R = copier les répertoires de manière récursive
  • v = expliquer ce qui se fait
  • p = Cela vous aidera à conserver votre permission et votre propriété avec des horodatages
3
Rakesh C

En règle générale, vous souhaitez conserver les autorisations de fichier lors de la copie, et non un nouvel ensemble d'autorisations de création par défaut. Cela signifie utiliser -a flag pour cp.

cp -a file filenew
1
Robi