2015/08/12

rsyncのエラー 12番

rsync: writefd_unbuffered failed to write 4092 bytes to socket [sender]

今更ながら、rsyncのエラーが起こったので、再度見直し、いろいろと調べてみた所
サイズの大きい圧縮ファイルの所で躓く様なので、そのあたりを調べてみた。

原因の推測
恐らく、ファイルサイズの異なる同じ名前のファイルを参照し、転送を開始する際に、
コマンドの指定が無い時は、差分の転送を行うが、
zip等の場合、内部構成まで見て差分処理を行おうとするようで、
エラーを返してくる模様。

解決方法
・ --whole-file をつけて、差分の送信をやめる。
・ zipやtarで保存する際は、別のファイルとなるように常にdateを付与する処理をする。
・ zip等のファイルは同期しないようにする。
そこで、一番楽そうな --whole-file をコマンドに追加することにした。

スクリプトシェル
#!/bin/sh
# バックアップ先ディレクトリ指定
BackupDIR=/home/*****/dailyBackup

mkdir -p $BackupDIR
# バックアップログ定義
BackupLog=/home/*****/log/rsync_backup.log rm -f $BackupLog
touch $BackupLog
chmod 600 $BackupLog
#エラーチェック
error_exit () {
exit 1
}
#バックアップ実行
echo "`date` backup start" >> $BackupLog
LastBackup=`ls -t $BackupDIR | grep backup | head -1`
NewBackup=`date +%Y%m%d`backup

mkdir $BackupDIR/$NewBackup
rsync -rlptv --whole-file --link-dest=../$LastBackup /home/比較元のディレクトリ/ $BackupDIR/$NewBackup >> $BackupLog 2>&1

code=$?
if [ $code -ne 0 ]; then
cat $BackupLog | mail -s "BACKUP NG CODE IS $code" root
rm -rf $BackupDIR/$NewBackup
error_exit
fi
echo "`date` backup end" >> $BackupLog



0 件のコメント:

コメントを投稿