<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>