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
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 stuff
de mon répertoire personnel dans un répertoire existantbackup
et nommez le nouveau répertoire stuff-backup
(si ce répertoire existe déjà, notez que stuff
sera 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 cp
rapporte 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
...
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.
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.
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.
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.
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:
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