J'ai besoin de copier un très grand répertoire (en téraoctets ici) et je veux surveiller la progression.
J'ai trouvé que pv
c'était un bon utilitaire, mais comment puis-je l'utiliser pour copier des répertoires de manière récursive? ( pv src > dst
ne fonctionne pas car ce sont des répertoires)
PS: fonctionnant sous OS X Mountain Lion, a pv
été installé à partir des ports Mac
Vous pouvez utiliser
tar
oupax
oucpio
:la source
v
à latar
commande pour voir les noms de fichiers.tar cf -
génère un flux contenant les fichiers et leurs métadonnées, qui est alimenté par un tube vers pv qui le transmet intact à l'autretar
lors de l'impression d'une indication de progression, et l'autretar
extrait les données de ce flux. Les trois commandes s'exécutent simultanément et traitent les données au fur et à mesure, il n'y a rien de stocké sur le disque, il n'y a rien de stocké en mémoire autre que les tampons de canal et les tampons internes des commandes qui ne représentent que quelques kilo-octets.pv
n'a aucun moyen de savoir combien de données il y a à transférer. Si vous avez une estimation de ce montant, vous pouvez la lui transmettre avec l'-s
option (GNUdu -sb src
vous donnerait une bonne approximation si les fichiers sont assez volumineux)Le goudron.
Exemple:
la source
Voici quelques commandes pour copier des répertoires avec des informations de progression.
S'il y a beaucoup de petits fichiers:
Cela indiquera la progression en fonction du nombre de fichiers copiés.
Vous pouvez rediriger vers
/dev/null
si vous n'en avez pas besoinlogfile
.Utilisez la commande suivante pour obtenir
filecount
:S'il y a peu de fichiers volumineux:
Cela rendra compte de la progression en fonction des octets copiés.
targetdir
doit exister.Utilisez la commande suivante pour obtenir
size
:Si vous souhaitez utiliser rsync:
Obtenez
filecount
comme indiqué ci-dessus.Si vous copiez sur le même système,
rsync -a
c'est pratiquement la même chose quecp -a
. Les avantages de rsync sont lorsque vous copiez sur le réseau ou si vous mettez à jour (ou comparez) une copie précédente.Voir ici pour plus de détails:
la source
Vous pouvez faire un
du -b /directory/
sur la source et la destination pendant qu'une commande de copie normale est en cours et comparer les deux. C'est tout aussi efficace et ne ralentit pas le processus de copie en le poussant à travers un tuyau.la source
la source