J'ai un système de fichiers pour un appareil que je programme et dont je voudrais faire une copie exacte. Idéalement, je voudrais que cette copie soit identique au dossier à partir duquel elle a été copiée. J'ai essayé d'utiliser cp -r
cp -a
et rsync -azvP
d'essayer d'y parvenir. Cependant, chacun entraîne un dossier de taille différente (en utilisant du -s
) et, finalement, même si mon appareil fonctionne à partir du dossier d'origine, il ne fonctionnera pas à partir de celui que j'ai copié.
- Qu'est-ce qui laisse de côté le fait que les commandes que j'ai utilisées ne tiennent pas compte?
- Est-il possible de garder tout identique lors de la copie d'un système de fichiers / dossier? Si oui, comment pourrais-je procéder?
PS J'ai posté une question similaire sur StackOverflow mais j'ai vite réalisé que je l'avais posée sur le mauvais échange
Edit: Cela peut ne pas être utile, mais quelle que soit la méthode que j'utilise le répertoire copié provoque toujours la machine en question à Kernel Panic avec la sortie suivante.
VFS: impossible de monter le root fs via NFS, en essayant la disquette. VFS: impossible d'ouvrir le périphérique racine "nfs" ou bloc inconnu (2,0) Veuillez ajouter une option de démarrage "root =" correcte; voici les partitions disponibles: 1f00
64 mtdblock0 (driver?) 1f02 64 mtdblock2 (driver?) 1f04 2432 mtdblock4 (driver?) 1f05 128 mtdblock5 (driver?) 1f06 4352 mtdblock6 (driver?) 1f07 204928 mtdblock7 (driver?) 1f08 mtdblock8 (pilote?) 0800
8388608 pilote sda: sd Panique du noyau - pas de synchronisation: VFS: impossible de monter root fs sur unknown-block (2,0)
la source
du
sortie n'est pas un indicateur que le contenu n'est pas le même.rsync -a
oucp -a
faites des copies exactes des répertoires, mais vous essayez de copier un disque amorçable, il y a quelques autres choses que vous devez faire pour terminer cela.dd if=/some/location of=/some/other/location bs=4M
lire et écrire des données telles quelles.Réponses:
J'utilise généralement l'une des alternatives suivantes:
rsync -aHAX
(ajouter v pour la verbosité) garantit que vous conservez toute structure de lien et x-attrs dans le dossier cible lors de la copie. N'oubliez pas que l'a
archivage signifie et préserve déjà le temps, la propriété et les autorisations.tar cvf
(ne pas compresser pour gagner du temps, juste les tarer), c'est ce que j'utilise si le premier ne répond pas à ce dont j'ai besoin pour une raison quelconque et que je n'ai pas de temps, mais j'essaie toujours le premier.Pour vérifier que tout s'est bien passé, vous pouvez exécuter
diff -r <folder1> <folder2>
ensuite si vous le souhaitez.la source
du -s
différence. J'avais l'habitudersync -axXSAH
de tout copier. Le -x copiera uniquement dans le système de fichiers, et non les fichiers montés à partir d'un autre système de fichiers.En lisant votre réponse dans les commentaires, il semble que vous essayez de copier le dossier racine ("Mon appareil ne démarre pas en utilisant le répertoire copié"). Dans ce cas, vous devez faire plusieurs choses.
Une fois que vous avez copié le dossier racine sur le nouveau système, vous devrez mettre à jour grub avant de démarrer.
la source
tar c
alorstar x
il. Le kicker était cependant de s'assurer que ma machine était éteinte depuis que je la démarrais en utilisant le FS qui était local sur ma machine, mais distant sur le périphérique que je démarrais (je démarrais le périphérique via NFS)grub-install: error: embedding is not possible, but this is required for cross-disk install.
Vous pouvez essayer FSArchiver . Il est le successeur de la même image, qui n'est plus entretenue. J'ai utilisé à la fois partimage et FSArchiver dans le passé, et ils ont tous deux bien fonctionné. Pour autant que je sache, ils font tous les deux des copies d'un système de fichiers aussi proche que possible de l'original. Je pense que FSArchiver est un peu plus puissant que partimage. Par exemple, cela fonctionne avec ext4, contrairement à partimage. Voir le tableau de comparaison FSArchiver / partimage .
la source
Utiliser
du
pour comparer des dossiers est intrinsèquement gênant. Si vous voulez vraiment comparer 2 répertoires uniquement en fonction de leur taille, utilisezdu
comme ceci:Ce commutateur indiquera la taille réelle des répertoires par rapport à la quantité d'espace disque qu'il consomme lorsqu'il est stocké sur le support de disque physique. Les disques sont organisés en blocs et les fichiers sont écrits sur ces blocs. Si un fichier n'a besoin que de BLOC + 1 d'espace, il consommera 2 BLOCS d'espace, et c'est ce qui est
du
normalement signalé. N'oubliez pas que le nom de l'outil est l'utilisation du disque!Étant donné que vous avez affaire à ce qui ressemble à un système de fichiers complet, je serais enclin à utiliser
dd
pour faire une copie exacte de la partition sur laquelle se trouve le répertoireVous pouvez ensuite l'utiliser
boot.img
pour restaurer la partition où vous le souhaitez.la source
du -sh /var
donne 21G maisdu -sh --apparent-size /var
donne 209G sur mon système.Cela dépend un peu de ce que vous entendez par «identique».
rsync
serait bien la plupart du temps. Parfois, vous souhaitez utilisertar
pour emballer tout dans un fichier et l'extraire à l'autre endroit.dd
pour copier l'intégralité du système de fichiers lui-même.Si vous avez un moyen de déboguer votre appareil, essayez de savoir exactement quel est le problème pour lequel il ne fonctionne pas actuellement.
la source