スポンサーリンク

LinuxPCのファイルをWindowsPCへバックアップ

目的
Linuxサーバー(nobunaga)のファイルをWindowsXP(kenshin)に刺さっているUSBフラッシュメモリにバックアップする

1 共有フォルダーを確認
コマンドは

smbclient //WindowsXPのPC名もしくはIP/共有フォルダー名

なのだが

tree connect failed: NT_STATUS_ACCESS_DENIED

とエラーがでてしまう。
調べてみるとコマンドsmbtreeではwindowsPCは見えているが共有フォルダーは見えていない。
以下のようなエラーメッセージも表示される。

cli_rpc_pipe_open: cli_nt_create failed on pipe

ググってみるとUbuntsu日本語フォーラムにまさしくそれがあった。

エクスプローラツール>フォルダーオプションで表示タブを開く
 簡易ファイルの共有を使用するのチェックが外れている場合は、
一旦規定値に戻すで他の必要な部分(拡張子の表示など)のみ変更する
・共有フォルダー上で右クリックし共有設定を一旦削除し(アクセス権限の管理を正常にするため)、
再度共有設定を行う

これによって正常に共有フォルダーにアクセスできるようになった。

2 バックアップシェルスクリプトを書く
smbclientをシェルスクリプトで利用する為のオプション
(非対話形式にする)

  • N パスワード入力をしない(windows側でパスワードを必要としていない設定がされてる必要がある)
  • c command コマンドを指定できる

パスワード付きzip圧縮をシェルスクリプトで利用する為のオプション
(今回は使用しなかった)

  • P パスワード オプションでパスワードを指定することが出来る

#!/bin/bash
#Taget Files
tfiles="/home/p047 /var/www"
#BackUp Files
bfile="nobunaga.tgz"
#Shared Folder
sfolder=`smbtree -N | grep USB_BACKUP | wc -l`
#Does Shared Folder Exist?
if [ $sfolder -eq 0 ]; then
echo "Shared Folder Does Not Exist"
exit
fi
/usr/bin/nice -10 tar cfz /home/p047/backup/$bfile $tfiles --exclude $bfile
#Does BackUp File Exist?
if [ ! -e /home/p047/backup/$bfile ]; then
echo "BackUp File Does Not Exsist"
exit
fi
#Is BackUp File Size Larger than 800MB?
bfilesize=`ls -la /home/p047/backup/$bfile | cut -d " " -f 5`
if [ $bfilesize -gt 838860800 ]; then
echo "BackUp File Size is Too Large"
exit
fi
smbclient //kenshin/USB_BACKUP -N -c "put $bfile;quit"
exit

3 定期的に実行する

/etc/cron.dailyにシェルスクリプトを移す