GNU/Linux >> Tutoriels Linux >  >> Linux

Estimer le temps ou le travail restant pour terminer pour Rsync ?

Lors de l'exécution de rsync sur un répertoire avec beaucoup de fichiers et de répertoires à plusieurs niveaux, pouvons-nous estimer la quantité de travail ou le temps pour terminer ?

  • l'option de progression affiche uniquement la progression du transfert d'un seul fichier, pas la progression du transfert de tous les fichiers et répertoires sous le répertoire source.

  • Une façon, je suppose, est de regarder les répertoires qu'il a
    transférés jusqu'à présent, et de comparer cela à la source.

    Cela m'aidera beaucoup si je connais l'ordre des fichiers et des répertoires dans
    dont rsync les transfère.

    Je suppose que cela peut être lié à ce rsync exécute plusieurs threads et que fait chaque thread ?

    Je ne suis pas sûr de l'ordre qu'il choisit, et ma supposition précédente de la première commande de pain ne semble pas correcte (je l'ai donc barrée).

Réponse acceptée :

Vous pouvez faire rsync imprimer une ligne par fichier en utilisant -i puis utilisez pv -l pour signaler la progression en fonction du nombre de lignes (en fait, le nombre de fichiers).

Vous aurez besoin de pv (visualiseur de tubes) :http://www.ivarch.com/programs/pv.shtml

rsync -ai sourcedir/ targetdir/ | pv -l -s filecount > logfile

Utilisez la commande suivante pour obtenir le nombre de fichiers :

find sourcedir | wc -l

Remarque :cette commande affiche les informations de progression en fonction du nombre de fichiers copiés. Cela fonctionne mieux s'il y a beaucoup de petits fichiers. S'il n'y a que quelques fichiers volumineux, vous ne vous amuserez pas beaucoup.

Pour voir la progression lorsque vous mettez à jour (ou comparez) une copie existante :

(plus d'informations :comparer les répertoires mais pas le contenu des fichiers)

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount > logfile

Le deuxième -i oblige rsync à imprimer une ligne par fichier même si elles sont égales.

Ajouter -n pour comparer (et non copier ou supprimer quoi que ce soit).

Omettre --delete au besoin.

Cette commande imprimera à l'écran en temps réel les fichiers qui diffèrent :

rsync -aii --delete sourcedir/ targetdir/ | pv -l -s filecount | 
    tee logfile | grep -v "^."

Les commandes ci-dessus fonctionnent mieux lorsqu'il y a beaucoup de petits fichiers. Si vous avez peu de fichiers volumineux, certains des rapports de progression intégrés à rsync pourraient vous être plus utiles. Voir la page de manuel rsync pour -P ou --progress ou --info=progress2 . Mais attention :ces options ne fonctionneront pas bien avec pv . Ou du moins je n'ai pas trouvé comment.

En relation:Besoin d'une restriction d'onglets jQuery active un onglet à la fois en utilisant le contrôleur mvc5 ?

Voici une solution de contournement grossière pour voir les progrès en fonction de la taille :

  • notez l'espace libre de la partition cible avant de copier en utilisant df -h .
  • notez la taille du répertoire source en utilisant du -sh .
  • utiliser watch df -h et regardez la taille grandir.

Évidemment, cela ne fonctionne que lors de la copie et non lors de la mise à jour ou de la comparaison.


Linux
  1. Supprimer les fichiers qui n'ont pas été consultés pendant un certain temps sous Linux

  2. Pseudo fichiers pour données temporaires ?

  3. Définir Umask pour le système de fichiers monté sur Sshfs ?

  4. Comment dire à Rsync de conserver l'horodatage sur les fichiers lorsque l'arborescence source a un point monté ?

  5. Utiliser rsync pour synchroniser les fichiers

Commande ls sous Linux pour lister les fichiers

Exemples Rsync pour transférer des fichiers sous Linux

Comment désactiver sélectivement Rsync ?

Sauvegardez vos fichiers avec rsync

dossiers de fusion Linux :rsync ?

Raisons pour lesquelles rsync ne transfère PAS tous les fichiers ?