Copier des fichiers sans perdre les autorisations de fichiers / dossiers

36

Comment copier des fichiers / dossiers d'un ordinateur Ubuntu sur un système de fichiers ext4 vers un autre ordinateur Ubuntu également installé sur un système de fichiers ext4, à l'aide d'une clé usb utilisant un système de fichiers vfat sans perdre les autorisations d'accès?

J'ai essayé la base ctrl-c à partir de l'ordinateur source, puis ctrl-v sur usb, puis ctrl-c à partir de usb, puis ctrl-v sur l'ordinateur cible, et aucune des autorisations de fichier / dossier n'est conservée.

oshirowanen
la source
vfatne prend pas en charge les autorisations de système de fichiers Unix. Vous devrez les stocker dans une archive, ou quelque chose de similaire, si vous voulez les conserver.
Alex L.
pourquoi pas rsync, comme je l'ai suggéré?
SiddharthaRT

Réponses:

56

Vous pouvez créer une archive tar de la source, la copier sur un autre ordinateur à l'aide du lecteur USB et l'extraire à cet emplacement. Tar conserve les autorisations de fichiers.

1 - Sur l'ordinateur source:

cd /path/to/folder/to/copy
tar cvpzf put_your_name_here.tar.gz .

2 - Copier put_your_name_here.tar.gzsur le lecteur USB puis sur l'autre ordinateur

3 - Sur l'ordinateur de destination:

cd /path/to/destination/folder
tar xpvzf put_your_name_here.tar.gz

tar va recréer la structure de dossiers archivés avec toutes les autorisations intactes.

Ces commandes vont archiver le contenu du dossier source, puis les extraire dans le dossier de destination. Si vous souhaitez copier le dossier lui-même, vous devez alors, à l'étape 1:

cd /path/to/parent/folder
tar cvpzf put_your_name_here.tar.gz folder_to_copy

Le même mécanisme pourrait être utilisé pour des fichiers uniques.


Si vous pouvez vous connecter d'un ordinateur à un autre à l'aide de ssh@siddharthart answer ( rsync), cela pourrait être plus pratique.

sierrasdetandil
la source
N'oubliez pas le -pdrapeau pour tarvous assurer que les autorisations sont préservées.
Haziz
@ haziz En fait, ce -pn'est pas vraiment nécessaire, voir mon commentaire à la réponse de @ mikew Whatever. Le -zest pas non plus nécessaire lorsque désarchiver, comme tarest capable de déterminer le type même de la compression, à moins qu'elle soit une ancienne version. Y compris les drapeaux dans la commande ne fait pas mal, dur.
sierrasdetandil
3
Je ne pense pas que vous puissiez compter sur ce comportement. BTW citant à partir de la page man tar "-p, --preserve-permissions, --same-permissions extraire des informations sur les autorisations sur les fichiers (valeur par défaut pour le superutilisateur)" ceci ne semble être le comportement par défaut que si la commande tar est créée en tant que superutilisateur. Ne compterait pas sur cela comme comportement par défaut. Je voudrais aussi toujours explicitement préciser le -zdrapeau lors de la compression ou de la décompression (ou -jsi vous utilisez bzip2).
Haziz
Le cryptage (de base) pourrait-il être facilement ajouté? (Je suppose qu'il y aurait plusieurs façons de le faire, mais je me demandais, mais si c'était fait en ligne de commande, comment le mot de passe / clé de cryptage / phrase secrète serait-il fourni? Comme si ******** ou comme le mot de passe sudo, où aucun raccourci clavier n'est visible?)
noisette à propos de natty
tarsouffre d'un problème très grave - il étouffe les chemins de plus de 100 caractères.
Nathan Osman
12

Vous pouvez essayer rsyncavec -aflag de conserver toutes les autorisations lors de la copie. Je ne suis pas au courant d'une solution plus simple, mais je l'avais utilisée pour un but dans le passé.

Rsync offre un support brillant pour la copie répétée, la mise à jour de dossiers, etc., tout en restant extrêmement rapide.

SiddharthaRT
la source
6
J'aime rsync(j'adore, en fait: -]), mais les autorisations du fichier ext4 seront perdues si le périphérique de destination est au format vfat, comme décrit par oshirowanen. La tarsolution est meilleure dans ce cas.
Yuric
6

Je pense que tarer puis décompresser devrait fonctionner à la fois pour les fichiers et les répertoires.

to tar:

tar cvpfz /target.tar.gz /source/

unar:

tar xvpfz /source/

Le pdrapeau représente --preserve-permissions.

Vous devriez voir man tarpour plus d'informations.

micro-ce que tu veux
la source
Je viens de faire un test rapide pour être sûr que cela -pn’est pas nécessaire - tar conserve les autorisations par défaut, du moins lorsque l’utilisateur est propriétaire des fichiers en cours d’archivage / d’extraction.
sierrasdetandil
2
C'est vrai, mais vous ne nous avez pas dit quels fichiers vous vouliez copier et je n'avais aucune raison de supposer quoi que ce soit par moi-même.
Mikewei