<html data-lt-installed="true">
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body style="padding-bottom: 1px;">
    <p>Salut tous,</p>
    <p><br>
    </p>
    <p>Ce bazar est juste pour partager un chti truc qui je pense
      peut-être utile… ou pas.</p>
    <p>Oui, j'ai envie de faire du bruit avec un peu de signal...<br>
    </p>
    <p><br>
    </p>
    <p>Un peu de partage a la hache d'extrait de 2 scripts, mais tout
      d'abord un peu de contexte</p>
    <p>    - Je fais mes backup avec borg backup (j'ai remplacé mon
      regretté backuppc avec ca, car moins relou sur les hardlink, meme
      si...)</p>
    <p>    - Mes backups sont faits en local (mais vraiment local :/ sur
      les memes disques :_/ )<br>
    </p>
    <p>    - Et là interviennent mes scripts : je viens tirer mes
      backups sûr un autre filer, un syno qui n'a pas toutes les
      commandes (column)</p>
    <p>    - Et évidement, je pars du principe que si je pourris mon
      backup, c'est dommage que le machin rsynké  soit mort par là
      même...</p>
    <p><br>
    </p>
    <p>Donc je me suis fait 2 scripts sur la machine qui tire<br>
    </p>
    <p>    - rsync_borg qui me rsync les backups tous les jours, avec
      chaque jour dans une arbo distante<br>
    </p>
    <p>        - mais évidement synchronisé sur une semaine complète ça
      me coûte cher en temps (si si, le secours est au bout d'un lien
      adsl)</p>
    <p>        - et comme le secours est plus mal loti : il y a moins
      d'espace disque</p>
    <p>        - évidement, il me fait des microstats journalières, en
      _début_ de son dump (plus facile pour lire les mails... )<br>
    </p>
    <p>        → il est hors de questions que j'alloue 7 * plus
      d'espaces et bcp plus de données à transférer</p>
    <p>        → j'ai donc remis la main sur l'option --link-dest de
      rsync qui fera des hardlink pour les fichiers déjà présents et
      identiques<br>
    </p>
    <p>    - rsync_stats</p>
    <p>        - ce script me permet de faire des statistiques sur une
      semaine de ces backups, en mode résumé</p>
    <p>        - et évidement, même en ascii c'est bien de présenter de
      façon lisible, sauf que là, columns, je n'avais pas le droit</p>
    <p>        * Tiens d'ailleurs il faudrait que je pousse une alerte
      lorsque les stats de 2 jours se ressemblent, ou qu'un jour a n'a
      plus que du 1 liens....</p>
    <p>        * Je m'interroge comment conserver ces stats....</p>
    <p><br>
    </p>
    <p>Quelques retours de mes bricolages sur l'un des volumes de backup
      :</p>
    <p><b>rsync_borg:</b></p>
    <pre class="moz-quote-pre" wrap="">Today     Thursday
Yesterday Wednesday


real    3m38.596s
user    1m5.733s
sys     0m32.281s

1 Liens 2.0G    41 
2 Liens 1.1G    8 
3 Liens 2.2G    9 
4 Liens 1011M   6 
5 Liens 1.1G    10 
6 Liens 1.2G    7 
7 Liens 103G    451 
New     Files   40
Deleted Files   76
All     Files   532
sent 872 bytes received 2.08G bytes 9.53M bytes/sec
total size is 118.75G speedup is 57.03
Filesystem        Type  Size  Used Avail Use% Mounted on
/dev/vg1/volume_9 ext4  709G  691G   19G  98% /volume9

receiving file list ... done
Felix/
[...]

</pre>
    <p><b>rsync_stat</b></p>
    <pre class="moz-quote-pre" wrap="">
Monday---------32/107M -------1/494M --------5/475M --------13/2.6G -------15/2.2G -------12/2.2G -------451/103G ------
Tuesday--------33/124M -------0/0o-----------13/2.6G -------6/1011M -------15/2.2G -------12/2.2G -------451/103G ------
Wednesday------34/388M -------8/1.1G --------11/2.6G -------6/1011M -------10/1.1G -------12/2.2G -------451/103G ------
Thursday-------41/2.0G -------8/1.1G --------9/2.2G --------6/1011M -------10/1.1G -------7/1.2G --------451/103G ------
Friday---------38/1.5G -------19/1.6G -------6/1.1G --------7/1.6G --------5/1.2G --------5/998M --------451/103G ------
Saturday-------30/90M --------20/1.8G -------7/1.2G --------7/1.6G --------5/1.2G --------12/2.2G -------451/103G ------
Sunday---------32/99M --------2/745M --------9/1.2G --------7/1.6G --------15/2.2G -------12/2.2G -------451/103G ------</pre>
    <p></p>
    <p><br>
    </p>
    <p>Alors pour le colonage, oui le nom du jour, ensuite les colonnes
      pour les fichiers avec un seul hardlink, puis 2, etc.</p>
    <p>Et, c'est amusant que le mardi, d'ailleurs, n'ait maintenant plus
      aucun fichier a 2 hardlink (ils ont dû tous tombent à cause du
      mercredi puis jeudi dans les 1 hardlink...)</p>
    <p>Ce phénomène est plus perceptible sur un autre de mes backups:</p>
    <pre class="moz-quote-pre" wrap="">Monday---------42/352M -------0/0o-----------0/0o-----------10/1.5G -------10/1.4G -------6/663M --------1583/560G -----
Tuesday--------42/655M -------0/0o-----------6/691M --------6/526M --------10/1.4G -------6/663M --------1583/560G -----
Wednesday------40/128M -------9/1.3G --------6/691M --------6/526M --------6/680M --------6/663M --------1583/560G -----
Thursday-------47/923M -------9/1.3G --------6/691M --------6/526M --------6/680M --------5/629M --------1583/560G -----
Friday---------39/639M -------4/699M --------4/851M --------4/945M --------4/672M --------1/34M ---------1583/560G -----
Saturday-------38/180M -------4/699M --------4/851M --------4/945M --------4/672M --------6/663M --------1583/560G -----
Sunday---------55/564M -------0/0o-----------4/851M --------4/945M --------10/1.4G -------6/663M --------1583/560G -----

</pre>
    <p>c'est d'ailleurs en pressentant ce phénomène entre autres que
      j'ai rajouté ces stats (d'ailleurs, regardez dans le retour de
      l'autre script : New Files et 1 Liens ne coïncident pas forcément
      non plus...)</p>
    <p>(oui ces 2 stats sont sans le passage du sed qui remplace les -
      du padding, qu'à l'arrache je n'ai pu remplacer par des espaces)<br>
    </p>
    <p></p>
    <p><br>
    </p>
    <p>Voici donc mes bricolages :
    </p>
    <p><b>rsync_borg</b></p>
    <p><font face="Courier New, Courier, monospace">#!/bin/bash<br>
        <br>
        #set -x<br>
        <br>
        DISRC=borg<br>
        DISRC=borg-ext00<br>
        DISRC=$1<br>
        <br>
        RSSRC=loanetborg@[2a01:acdc:cafe:dead::beef]::borg/<br>
        DAYW=$(date +%A)<br>
        DAYB=$(date +%A --date '1 days ago')<br>
        <br>
        <a class="moz-txt-link-abbreviated" href="mailto:NTFY_LOPA=bot@adlp.org:oulala">NTFY_LOPA=bot@adlp.org:oulala</a><br>
        NTFY_HTTP=<a class="moz-txt-link-freetext" href="https://ntfy.adlp.org/adlp-org_info">https://ntfy.adlp.org/adlp-org_info</a><br>
        <br>
        CIBLE="/volume9/"<br>
        <br>
        RSYPA="--dry-run"<br>
        RSYPA=""<br>
        <br>
        ### Creation forcée des repertoires de backup de la veille et
        d'aujourdhui<br>
        BACKUP_DIR="${CIBLE}${DISRC}"<br>
        BACKUP_PATH="${BACKUP_DIR}/${DAYW}"<br>
        LATEST_LINK="${BACKUP_DIR}/${DAYB}"<br>
        <br>
        if [ ! -d ${BACKUP_DIR} ]; then<br>
            echo This backup destination does not exist, Sorry<br>
            exit 1<br>
            fi<br>
        <br>
        mkdir -p ${BACKUP_PATH} ${LATEST_LINK}<br>
        <br>
        echo "Today     ${DAYW}"<br>
        echo "Yesterday ${DAYB}"<br>
        <br>
        ### Creation du backup<br>
        /bin/curl -u ${NTFY_LOPA} ${NTFY_HTTP} -k -d "$HOSTNAME Debut
        rsync" -H "Title: Rsync ${DISRC}" -H "Tag: rsync" -s
        >/dev/null<br>
        cont=1<br>
        <br>
        # La boucle c'est pour forcer le backup a cas ou ... mais dans
        le cas ou les stats sont mortes...<br>
        while [ ${cont} -ne 0 ]; do<br>
            DAYN=$(date +%A)<br>
            if [ ${DAYN} != ${DAYW} ]; then<br>
                echo On a fait un tour d horloge on est foutu<br>
                rm "${BACKUP_DIR}/latest"<br>
                exit 0<br>
                fi<br>
            echo ""<br>
            time rsync ${RSYPA} -av --delete-after \<br>
                --human-readable \<br>
                --exclude wrk.cache \<br>
                --exclude lock.exclusive \<br>
                -e ssh ${RSSRC}${DISRC}/ \<br>
                --link-dest "${LATEST_LINK}/" \<br>
                "${BACKUP_PATH}/" > /tmp/rapport-rsync-deleting.$$<br>
            cont=$?<br>
            if [ ${cont} -ne 0 ]; then<br>
                echo On va devoir attendre : return code etait $cont<br>
                sleep 300<br>
                fi<br>
            done<br>
        /bin/curl -u ${NTFY_LOPA} ${NTFY_HTTP} -k -d "$HOSTNAME Fin
        rsync" -H "Title: Rsync ${DISRC}" -H "Tag: rsync,+1" -s
        >/dev/null<br>
        <br>
        ### Creation du lien latest<br>
        # Alors n'allez pas croire que je ne connais pas ln -f, juste
        que je n'arrive pas a m'en servir<br>
        echo ""<br>
        rm "${BACKUP_DIR}/latest"<br>
        ln -s "${BACKUP_PATH}" "${BACKUP_DIR}/latest"<br>
        cd "${BACKUP_DIR}/latest"<br>
        for i in $(seq 7); do<br>
            echo -e "$i Liens $(du -ch $(find -type f -links $i | tee
        /tmp/rapport-rsync-$i.$$) | grep "total$" | sed -s
        s/total$//g)$(wc -l /tmp/rapport-rsync-$i.$$)" | sed -s
        "s=\(.*\)/tmp.*=\1=g"<br>
            rm /tmp/rapport-rsync-$i.$$<br>
            done<br>
        echo "New     Files  " $(cat /tmp/rapport-rsync-deleting.$$ |
        while test -z $b ; do read a; echo $a ;echo $a | grep "^$"
        && b=c; done | grep -Ev "^(deleting |$|receiving |.*/$)"
        | wc -l )<br>
        echo "Deleted Files  " $(grep "^deleting "
        /tmp/rapport-rsync-deleting.$$ | wc -l)<br>
        echo "All     Files  " $(find -type f | wc -l)<br>
        cat /tmp/rapport-rsync-deleting.$$ | while read ligne; do<br>
            if [ -n "$lili" ]; then<br>
                echo $ligne<br>
                fi<br>
            if [ -z "$ligne" ]; then<br>
                lili=go<br>
                fi<br>
            done<br>
        df -Th .<br>
        echo ""<br>
        cat /tmp/rapport-rsync-deleting.$$<br>
        rm /tmp/rapport-rsync-deleting.$$</font></p>
    <p><b><br>
      </b></p>
    <p><b><br>
      </b></p>
    <p><b><br>
      </b></p>
    <p><b><br>
      </b></p>
    <p><b>rsync_stat</b></p>
    <p><font face="Courier New, Courier, monospace">#!/bin/bash<br>
        <br>
        #set -x<br>
        <br>
        DISRC=borg<br>
        DISRC=borg-ext00<br>
        DISRC=$1<br>
        <br>
        CIBLE="/volume9/"<br>
        <br>
        RSYPA="--dry-run"<br>
        RSYPA=""<br>
        <br>
        ### Creation forcée des repertoires de backup de la veille et
        d'aujourdhui<br>
        BACKUP_DIR="${CIBLE}${DISRC}"<br>
        <br>
        pad=$(printf '%0.1s' "-"{1..15})<br>
        padlength=15<br>
        cd "${BACKUP_DIR}"<br>
        for day in Monday Tuesday Wednesday Thursday Friday Saturday
        Sunday; do<br>
            cd "${BACKUP_DIR}/$day"<br>
            days=$days$day$(printf '%*.*s' 0 $((padlength - ${#day} ))
        "$pad")<br>
            for i in $(seq 7); do<br>
                size=$(du -ch $(find -type f -links $i | tee
        /tmp/rapport-rsync-$i.$$) | grep "total$" | sed -s s/total$//g)<br>
                files=$(wc -l /tmp/rapport-rsync-$i.$$| sed -s "s=\(.*\)
        /tmp.*=\1/=g")<br>
                test $files = "0/" && size="0o"<br>
                days=$days$files$size$(printf '%*.*s' 0 $((padlength -
        ${#files} - ${#size} )) "$pad")<br>
                rm /tmp/rapport-rsync-$i.$$<br>
                done<br>
            days="$days\n"<br>
            done<br>
        echo -e $days | sed -s "s/-/ /g"</font><br>
      <br>
    </p>
    <div id="grammalecte_menu_main_button_shadow_host" style="width:
      0px; height: 0px;"></div>
  </body>
  <lt-container></lt-container>
</html>