Sain viimein palvelimen, johon pystyisin tekemään verkon yli varmuuskopioni, jos vain osaisin.
Minulla on nyt siis läppäri, josta haluan tehdä varmuuskopiot toiselle läppärille, joka on puoli-yleisessä käytössä. Aluksi meinasin tehdä salatun tar-pallon bz2:lla pakattuna, mutta tulin siihen tulokseen, että tällöin en ilmeisesti pystyisi hyödyntämään rsyncin incrementaaleja. Niinpä arvelin, että otan kaikki /homen ulkopuoliset (käytännössä /etc, tietokannan dumppi ja pari muuta yksittäistä tiedostoa) erilliseen backup-kansioon /homen alle. Tämän jälkeen koko /home rsynkataan etäpalvelimelle. Luotan tässä siihen, että siellä päässä kukaan ei ole kiinnostunut tiedostoistani, mikä on melko varmaa käyttäjäkunta tuntien.
Vastapäässä on käyttäjätili ja olen luonut avainparin SSH-yhteyttä varten ja se toimii mallikkaasti. SSH-palvelin pyörii yläportissa käytännön pakosta. Ongelma tällä hetkellä on, että saan virhettä kokeillessani synkkausta rsyncin dry-run -parametrilla. Käytän tällaista backup-skriptiä, jonka pitäisi hoitaa rotaatiota 7 päivän ajalta (huom! BDIR ei kata nyt siis juuri mitään, testausvaiheen takia):
#!/bin/sh
# This script does personal backups to a rsync backup server. You will end up
# with a 7 day rotating incremental backup. The incrementals will go
# into subdirectories named after the day of the week, and the current
# full backup goes into a directory called "current"
# tridge@linuxcare.com
# directory to backup
BDIR=/home/käyttäjä/backup
# excludes file - this contains a wildcard pattern per line of files to exclude
# EXCLUDES=$HOME/cron/excludes
# the name of the backup machine
BSERVER=varmistuspalvelimen_ip-osoite
# your password on the backup server
# export RSYNC_PASSWORD=XXXXXX
########################################################################
BACKUPDIR=`date +%A`
OPTS="--force --ignore-errors --delete-excluded --exclude-from=$EXCLUDES
--delete --backup --backup-dir=/$BACKUPDIR -a"
export PATH=$PATH:/bin:/usr/bin:/usr/local/bin
# the following line clears the last weeks incremental directory
[ -d $HOME/emptydir ] || mkdir $HOME/emptydir
rsync -e 'ssh -ssh-käyttäjä -pyläportti' --delete -a $HOME/emptydir/ $BSERVER::$USER/$BACKUPDIR/
rmdir $HOME/emptydirq
# now the actual transfer
rsync -v -n $OPTS -e 'ssh -pyläportti' $BDIR käyttäjä@varmistuspalvelimen_ip-osoite:/current
Ja kun tämän ajaa, virhe on seuraava:
rsync: connection unexpectedly closed (0 bytes received so far) [sender]
rsync error: error in rsync protocol data stream (code 12) at io.c(600) [sender=3.0.5]
rmdir: ”/home/käyttäjä/emptydirq”:n poisto epäonnistui: Tiedostoa tai hakemistoa ei ole
sending incremental file list
created directory /current
backup/
backup/IfolorJavaUpload.data
sent 92 bytes received 19 bytes 74.00 bytes/sec
total size is 228 speedup is 2.05 (DRY RUN)
En ole vielä ilman tuota dry-runia kokeillut, tapahtuuko mitään. Mutta käsittääkseni ssh-yhteys syntyy, mutta nuo kaksi ensimmäistä error-riviä estävät toiminnan. IfolorJavaUpload.data on tuolla testitiedostona backup-kansiossa.
Sen verran vielä taustatietoa, että varmuuskopioitavassa päässä on käytössä Jaunty ja varmuuskopiopalvelimessa pyörii Karmic. Vastapäähän ei ole asennettu mitään muuta kuin openssh-palvelin. Voisiko esim. rsyncin versioiden eroavuus aiheuttaa tuon virheen? Näköjään versiot ovat 3.05 Jauntyssa ja 3.06 Karmicissa.
Onko rsync ylipäätään järkevin ratkaisu tuohon vai kannattaisiko käyttää
rdiff-backuppia tai
rsnapshottia? En ole noihin tutustunut, mutta mainoslauseiden mukaan tuntuisivat tekevän asioita helpommin. Varsinkin rsnapshotissa vaikuttaisi olevan tuo yhden fullin ja parin lisäävän varmuuskopion pyörittäminen valmiina ohjelmassa ilman tarvetta omiin skripteihin.