J'essaie de copier un système de fichiers pour un appareil pour lequel je programme. Après tant de temps à essayer de comprendre pourquoi le système de fichiers que j'installais ne fonctionnait pas, j'ai découvert que cp
n'avait pas fait le travail. J'ai utilisé du -s
pour vérifier la taille du système de fichiers d'origine et celui avec lequel j'ai copié cp -r
, car il s'avère qu'ils diffèrent d'environ 150 octets.
Quelque chose me dit que les liens symboliques ou une sorte d'objets du noyau ne sont pas copiés correctement.
Est-il possible de copier un dossier/système de fichiers exactement? Si oui, comment pourrais-je m'y prendre?
Une autre option populaire consiste à utiliser tar c source | (cd target && tar x )
. Voir cet article linuxdevcenter.com.
Essayez de le faire de manière simple:
cp -a src target
de man cp
-a, --archive
same as -dR --preserve=all
Il préserve les droits, les liens symboliques ...
Ici, j'ai essayé tout le code de mon Linux. Semble Rsync proposé par @seanmcl comme étant le bon tandis que d'autres n'ont pas réussi à garder propriétaires et/ou certains fichiers spéciaux ou a = résultat refusé. Le code exact est:
$ Sudo rsync -aczvAXHS --progress /var/www/html /var/www/backup
N'oubliez pas d'utiliser uniquement le nom du répertoire et de ne pas mettre de barre oblique (/
) ou un caractère générique (/*
) à la fin de source et cible nom sinon les fichiers cachés juste en dessous de la source ne sont pas copiés.
La façon la plus précise que je connaisse de copier des fichiers est avec cpio
:
cd /path/to/source
find . -xdev -print0 | cpio -oa0V | (cd /path/to/target && cpio -imV)
Pas vraiment facile à utiliser, mais c'est très précis, en préservant les horodatages, les propriétaires, les autorisations, les fichiers spéciaux.
Rsync est le meilleur moyen de copier un système de fichiers. Ce sont ne myriade d'arguments qui vous permettent de contrôler exactement ce qui est copié.