Hur skapar jag ett fjärrbackupskript med Rsync?

Procédure

Vad används Rsync till?

Med Rsync kan du synkronisera filer via kommandoraden så att du kan säkerhetskopiera filer från en plats till en annan genom att synkronisera dem enligt källa.

Med skriptet nedan kan du utföra en fullständig säkerhetskopiering en gång i månaden och en partiell säkerhetskopiering en gång i veckan.

Hur skapar jag ett skript för fjärrbackup med Rsync?

Följande skript gör det möjligt för dig att skapa ett fjärrbackupskript med Rsync. Skriptet testar om källmappen finns, testar serverns tillgänglighet och skapar en ny mapp varje månad som det lägger in en fullständig säkerhetskopia i.

#!/bin/sh month=`date +%B` day=`date +%d-%m-%Y` hour=`date +%T` log="/home/user/logs_backups" local="/user/folder" remote="/files/backups_$month/" hostssh="ip_server" userssh="login" counter=5 retention=`date +%B --date='1 month ago'` name() { echo "-------------------------------------------------------------" > $log/$day_backup.log echo -e "$lokal säkerhetskopia av $(datum +%d-%B-%Y)" >> $log/$day_backup.log echo "-------------------------------------------------------------" >> $log/$day_backup.log }# Om katalogen som innehåller loggarna inte finns kommer den att skapas.if [ ! -d $log ];then mkdir $log fi# Vi testar att källmappen finns OCH att servern svarar på pingrecus=$(ping -c $counter $hostssh | grep 'received' | awk -F',' '{print $2 }' | awk '{print $1 }') > /dev/null 2>&1 if [[ ! -d $local ]] && [[ $recus -eq 0 ]];then name echo -e "$day-$hour :\n" >> $log/backup_$day.log echo -e "$local finns inte längre eller är otillgänglig.\nServern är otillgänglig ($hostssh : $counter paket skickade, $recus paket mottagna).\nIngen säkerhetskopiering utförd." >> $log/sauvegarde_$jour.log exit# Vi testar bara om källmappen finnselif [ ! -d $local ];then name echo -e "$jour-$heure : $local n'existe plus ou est inaccessible.\nAuc aucune sauvegarde effectuée." >> $log/sauvegarde_$jour.log >> $log/sauvegarde_$jour.log exit# Endast serverns ping testaselif [ $recus -eq 0 ];then name echo -e "$jour-$heure : Serveur inaccessible ($hostssh : $compteur paquets transmises, $recus paquets reçus).\nNo backup made." >> $log/sauvegarde_$jour.log >> $log/sauvegarde_$jour.log exit fi echo "-------------------------------------------------------------" > $log/backup_day.log echo "Säkerhetskopia av $local från $(datum +%d-%B-%Y)" >> $log/backup_day.log echo "-------------------------------------------------------------" >> $log/backup_$day.log # Överför starttid i loggen echo "Backup start time: $(date +%T)" >> $log/backup_$day.log echo "-------------------------------------------------------------" >> $log/backup_$day.log# Filöverföringrsync -avz --stats --protect-args --delete-after -e ssh $local $userssh@$hostssh:$distant >> $log/backup_$day.log # -a : arkivläge (motsvarande -rlptgoD) # -z : datakomprimering under överföringen.
-e : för att ange användning av ssh # -- stats : ger information om överföringen (antal filer ...). # --protect -args : Om du behöver överföra ett filnamn som innehåller mellanslag kan du ange det med det här alternativet. # --delete-after : raderar filer som inte längre finns i källan efter överföring till målmappen.
status=$? echo "" >> $log/day_backup.log# rsync returkodercase $status in 0) echo Success >> $log/day_backup.log; 1) echo Syntax- eller användningsfel >> $log/day_backup.log; 2) echo Protokollinkompatibilitet >> $log/day_backup.log;; 3) echo Fel vid val av filer och inmatnings-/utmatningskataloger >> $log/sauvegarde_$jour.log;; 4) echo Åtgärd som inte stöds: ett försök att manipulera 64-bitarsfiler på en plattform som inte stöder dem; eller ett alternativ som stöds av klienten men inte av servern. >> 5) echo Error starting client-server protocol >> $log/sauvegarde_$jour.log;; 6) echo daemon unable to write to log file >> $log/sauvegarde_$jour.log;; 10) echo I/O socket error >> $log/sauvegarde_$jour.log; 11) echo I/O file error >> $log/sauvegarde_$jour.log;; 12) echo Error in rsync protocol data stream >> $log/save_$day.log;; 13) echo Error with program diagnostics >> $log/save_$day.log;; 14) echo Fel i IPC-kod >> $log/save_$day.log;; 20) echo SIGUSR1 eller SIGINT mottagen >> $log/save_$day.log;; 21) echo "An error returned by waitpid()" >> $log/save_$day.log;; 22) echo Fel vid allokering av huvudminnesbuffertar >> $log/sauvegarde_$jour.log;; 23) echo Delvis överföring på grund av ett fel >> $log/sauvegarde_$jour.log;; 24) echo Delvis överföring på grund av att en källfil försvann >> $log/sauvegarde_$jour.log;; 25) echo Gränsen --max-delete har nåtts >> $log/sauvegarde_$jour.log;; 30) echo Maximal väntetid överskreds vid sändning/mottagning av data >> $log/sauvegarde_$jour.log;; 35) echo Väntetid överskreds i väntan på en anslutning >> $log/sauvegarde_$jour.log;; 255) echo Oförklarligt fel >> $log/sauvegarde_$jour.log;; esac echo "-------------------------------------------------------------" >> Sluttid i loggen echo "Backup" >> Sluttid i loggen echo "Backup end time: $(date +%T)" >> $log/backup_$day.log echo "-------------------------------------------------------------" >> $log/backup_$day.log# Säkerhetskopior raderas enligt retention.ssh $userssh@$hostssh rm -rf "backups_$retention" exit

källa : GitHub tuxmika

Slutsats

Du kan nu skapa ett fjärrbackupskript med hjälp av Rsync för att överföra filer och mappar till ditt onlinebackuputrymme med hjälp av LWS. Du kan köra ditt skript via ett cron-jobb så att det startar en gång i veckan.

Tveka inte att dela med dig av dina frågor och kommentarer!

help.lws.net/a/1229
Var den här artikeln till hjälp?

Ja

Nej

Läst 23 021 gånger

Tack! Ställ gärna frågor om vår dokumentation om du vill ha mer information och hjälp oss att förbättra den.

Liknande artiklar

En fråga om den här artikeln?

Ställ den till LWS-teamet och communityn. Svaret publiceras efter moderering.

Ställ en fråga till AWS-teamet och dess community

GDPR: Personuppgiftsansvarig: LWS-Ligne Web Services. Ändamål: moderering och offentlig publicering av din fråga, eventuellt meddelande om ett svar. Rättslig grund: samtycke (art. 6.1 a GDPR). Lagring av e-postadresser: 90 dagar efter meddelandet, högst 12 månader utan svar. För att utöva dina rättigheter, se GDPR-avsnittet i våra allmänna villkor.