Synology-Forum.nl
Overige software => Overige software => Topic gestart door: jeronimo78 op 09 november 2012, 22:41:58
-
Hallo allen
Ik ben bezig met het maken van een rsync scriptje die data van een webserver naar mijn NAS (DS212 met DSM4.1) op haalt
Het ophalen van de data is totaal geen probleem. Ik wil echter graag de logs van elke synchronisatie appart op slaan. Op zich lukt dat ook wel. Echter deze worden nu allemaal in één map gedumpt wat het geheel niet zo heel overzichtelijk maakt.
Daarom wil ik ze heel graag in de volgende structuur onder brengen;
download/rsync <- hier komt de data
download/logs/2012/11` <- hier komen de logs (nov 2012)
download/logs/2012/12` <- hier komen de logs (dec 2012)
Ik heb nu een scriptje die deze folders aan maakt. En nu is het gekke, de folders zie ik netjes via FileStation, echter de cron kan de log niet in de folder schrijven met de melding folder does not exist. Kijk ik vervolgens via SHELL (ingelogd als root) dan zijn de betreffende mappen nergens meer te vinden.
Waar gaat het mis?
#!/bin/sh
#variabelen
NOW1=`date +%Y`
NOW2=`date +%m`
NOW3=`date +%Y%m%d_%H%M.log`
log_yearfolder="/volume1/sitenaam/rsync/log/${NOW1}"
log_monthfolder="${NOW2}"
log=rsync_${NOW3}
remote_folder="/home/account/domains/domeinnaam/public_html/sitenaam"
local_folder="/volume1/sitenaam/rsync"
#commando's
#year folder /volume1/sitenaam/rsync/log/YYYY
mkdir -p $log_yearfolder
chmod 777 $log_yearfolder
#month folder MM in /volume1/sitenaam/rsync/log/YYYY/
cd $log_yearfolder
mkdir -p $log_monthfolder
chmod 777 $log_monthfolder
rsync -vv -u -a -p -g -t -o --stats --exclude-from=/volume1/sitenaam/rsync_excl.txt --rsh=ssh inlog@server.nl:$remote_folder $local_folder >> /volume1/sitenaam/rsync/log/`date +'%Y'`/`date +'%m'`/${log} 2>&1
Het maken van de log direct in volume1/sitenaam/rsync/log gaat wel goed. Volgens mij zit het dan dus ook in het maken van de jaar/maand folders
-
Je moet in je script een absolute cd opnemen, een cd die begin met / zodat je daarna zeker weet in welke directory je zit te werken.
-
Ik snap het niet helemaal, bedoel je dat ik moet beginnen met een cd /
Dat het dan dus zo wordt?
#!/bin/sh
cd /
#variabelen
NOW1=`date +%Y`
NOW2=`date +%m`
NOW3=`date +%Y%m%d_%H%M.log`
log_yearfolder="/volume1/sitenaam/rsync/log/${NOW1}"
log_monthfolder="${NOW2}"
log=rsync_${NOW3}
remote_folder="/home/account/domains/domeinnaam/public_html/sitenaam"
local_folder="/volume1/sitenaam/rsync"
#commando's
#year folder /volume1/sitenaam/rsync/log/YYYY
mkdir -p $log_yearfolder
chmod 777 $log_yearfolder
#month folder MM in /volume1/sitenaam/rsync/log/YYYY/
cd $log_yearfolder
mkdir -p $log_monthfolder
chmod 777 $log_monthfolder
rsync -vv -u -a -p -g -t -o --stats --exclude-from=/volume1/sitenaam/rsync_excl.txt --rsh=ssh inlog@server.nl:$remote_folder $local_folder >> /volume1/sitenaam/rsync/log/`date +'%Y'`/`date +'%m'`/${log} 2>&1
Want dan snap ik nog steeds niet waarom het wel in de file manager te zien is, maar niet via de shell.
-
Je cd / aan het begin moet is niet voldoende je moet een cd doen na de locatie op je nas waaronder je de log files wilt wegschrijven, bijvoorbeeld: cd /volume1/download/logs/
Dan worden hieronder de jaar en maandmappen aangemaakt.
-
Hartelijk dank voor je reactie
Dit helpt echter ook niet
Ook als ik van de cron commando het volgende maak werkt het niet;
cd /volume1/2gether/rsync/log/ && sh /volume1/2gether/rsync2.sh
Ik begrijp nog steeds niet waar het mis gaat
#!/bin/sh
#variabelen
NOW1=`date +%Y`
NOW2=`date +%m`
NOW3=`date +%Y%m%d_%H%M.log`
log_yearfolder="/${NOW1}"
log_monthfolder="/${NOW2}"
log=rsync_${NOW3}
remote_folder="/home/gethernl/domains/2-get-her.com/public_html/2gether"
local_folder="/volume1/2gether/rsync"
#commando's
#year folder /volume1/2gether/rsync/log/YYYY
mkdir -p $log_yearfolder
chmod 777 $log_yearfolder
#month folder MM in /volume1/2gether/rsync/log/YYYY/
cd $log_yearfolder
mkdir -p $log_monthfolder
chmod 777 $log_monthfolder
rsync -vv .........