Merci à zealot001 qui m’a filé un script plus propre que le mien :P
Voici de quoi synchroniser des Team Drives et des clés d’accès Service Accounts (tutoriel).
#!/bin/bashOPTIONS="-c -P --transfers 3 --checkers 3 --size-only --drive-server-side-across-configs --drive-stop-on-upload-limit"SAKEYS="/home/aerya/scripts/rclone/sakeys"LOG="/home/aerya/logs/rclone.log"R1="FreeTD1"R2="FreeTD2"R3="FreeTD3"R4="FreeTD4"[[ "$(pidof -x $(basename $0))" != $$ ]] && echo "[KO] Script déja en cours" && exit 1sync_rlcone(){ echo -e "$(date +"%Y-%m-%d %H:%M:%S") : Start rClone sync "$1"" >> "$LOG" rclone sync "$2": "$1": "$OPTIONS" --drive-service-account-file="$SAKEYS"/"$1".json if [[ $? -eq 0 ]] ; then echo -e "$(date +"%Y-%m-%d %H:%M:%S") : rClone sync "$1" OK\n" >> $LOG else echo -e "$(date +"%Y-%m-%d %H:%M:%S") : rClone sync "$1" ERROR\n" >> $LOG fi}sync_rlcone "$R2" "$R1"sync_rlcone "$R3" "$R2"sync_rlcone "$R4" "$R3"
J’ai placé ça en CRON toutes les 4h et ça fait le café
# rClone Sync0 */4 * * * /home/aerya/scripts/rclone/sync.sh
Avec les notifications Discord (tutoriel)
stockageBOT — Aujourd’hui à 16:00FreeTD1 ==> Total size: 6.128 TiB (6737761093015 Byte)FreeTD2 ==> Total size: 6.128 TiB (6737761093015 Byte)FreeTD3 ==> Total size: 6.128 TiB (6737761093015 Byte)FreeTD4 ==> Total size: 6.128 TiB (6737761093015 Byte)
Explications des variables, à adapter à votre configuration
OPTIONS= »-c -P –transfers 3 –checkers 3 –size-only –drive-server-side-across-configs –drive-stop-on-upload-limit »
options de rClone, le –drive-server-side-across-configs servant à tout faire passer chez Google plutôt que par mon serveur (quelques GB/s de vitesse de transfert du coup)
SAKEYS= »/home/aerya/scripts/rclone/sakeys »
dossier des clés SA. 1 clé par TD, chacune étant nommée comme lui => FreeTD1 = FreeTD1.json etc
[[email protected] rclone]$ ls -l /home/aerya/scripts/rclone/sakeystotal 55-rwxrwxrwx 1 root root 2333 Dec 28 11:00 FreeTD1.json-rwxrwxrwx 1 root root 2333 Dec 28 11:00 FreeTD2.json-rwxrwxrwx 1 root root 2333 Dec 28 11:00 FreeTD3.json-rwxrwxrwx 1 root root 2333 Dec 28 11:00 FreeTD4.json
LOG= »/home/aerya/logs/rclone.log »
les logs de rClone, ça ressort sous cette forme
2022-02-15 16:00:02 : Start Rclone sync FreeTD22022-02-15 16:01:57 : Rclone sync FreeTD2 OK2022-02-15 16:01:57 : Start Rclone sync FreeTD32022-02-15 16:03:43 : Rclone sync FreeTD3 OK2022-02-15 16:03:43 : Start Rclone sync FreeTD42022-02-15 16:05:24 : Rclone sync FreeTD4 OK
R1= »FreeTD1″ R2= »FreeTD2″ R3= »FreeTD3″ R4= »FreeTD4″
les remotes rClone non déchiffrés, le 1 étant copié sur le 2, le 2 sur le 3, le 3 sur le 4. Pourquoi les remotes non déchiffrés ? Pour copier les données chiffrés du 1er team drive sur tous les autres et donc utiliser le même chiffrement partout.
Regardons le rclone.conf
[[email protected] rclone]$ cat /root/.config/rclone/rclone.conf[FreeTD1]type = driveclient_id = xxxclient_secret = Gxxxscope = drivetoken = xxxteam_drive = ABCroot_folder_id =[FreeTD1Crypt]type = cryptremote = FreeTD1:password = motdepassesuperdur[FreeTD2]type = driveclient_id = xxxclient_secret = xxxscope = drivetoken = xxxteam_drive = DEFroot_folder_id =[FreeTD3]type = driveclient_id = xxxclient_secret = xxxscope = drivetoken = xxxteam_drive = GHIroot_folder_id =[FreeTD4]type = driveclient_id = xxxclient_secret = xxxscope = drivetoken = xxxteam_drive = JKLroot_folder_id =
Je n’ai besoin que d’un remote déchiffré (FreeTD1Crypt:). Comme le contenu chiffré du Team Drive FreeTD1: est synchronisé sur les autres TDs, si le TD1 venait à « disparaître », je n’aurais qu’à ajouter à la main dans mon rclone.conf un remote déchiffré pour le FreeTD2: pour m’en servir.
[FreeTD2Crypt]type = cryptremote = FreeTD2:password = motdepassesuperdur
Bien entendu le script est adaptable pour des GDrives ou GD/TD mélangés. Ici les accès aux TDs 2, 3 et 4 se font via les clés SA qui y sont liées mais on pourrait aussi faire sans clé et uniquement avec l’accès GDrive classique.