Estou tentando configurar uma tarefa rsync
usando o cron.
O objetivo é sincronizar uma pasta de trabalho em uma partição linux e sua contraparte em uma partição do Windows em um computador de inicialização dupla.
Para fazer isso, estou tentando rsync minha pasta de trabalho linux em um compartilhamento do windows a cada 10min e para rsync
da pasta correspondente do windows share na pasta de trabalho linux na inicialização.
O crontab que eu configure chama um pequeno script bash, que principalmente para verificar se o windows sync- > linux está em andamento antes de sincronizar ao contrário.
História do meu diagnóstico:
rsync
. Por que, como rsync
não pode ser executado quando no cron e funciona bem com a mão!?
Aqui está o script totalmente comentado sync.sh
, colocado em /home/user/
:
#! /bin/bash
pathMint="/home/user/workFolder/"
pathWin="/home/windows/Users/user/workFolder/"
# windows can't keep up with permissions, timestamp, or group specifications, hence no -a [archive mode = -rlptgoD]
ARGS="-rloD -zvh"
if [ -z "$1" ]
then
echo "No argument supplied"
exit 0
fi
# sync out
if [ "$1" = "out" ]
then
#test if rsync is running (previous long sync, or "sync in" after start-up -eg adding files from windows edits.
running='ps agux|pgrep rsync'
echo "t1">test.log
#exit if so.
if [ -n "$running" ]
then
exit 0
fi
echo "t2">>test.log
#else, sync.
rsync $ARGS --exclude=".*" --exclude="./**" --exclude="*~" "$pathMint" "$pathWin" |tee -a test.log
echo "t3">>test.log
elif [ "$1" = "in" ]
then
# task: sync in.
# Sync windaube share on mint's xtreee folder at startup.
rsync $ARGS "$pathWin" "$pathMint"
fi
exit 0
Aqui está o crontab -l
:
PATH=/usr/local/sbin:/usr/local/bin:/home/user/bin:/home/user
MAILTO="[email protected]"
# task: sync out.
# Sync mint's xtreee folder with windaube share every 10 min.
*/10 * * * * /home/user/sync.sh out
# task: sync in.
# Sync windaube share on mint's xtreee folder at startup.
@reboot /home/user/sync.sh in