宣伝1。Firefox Hacks Rebooted発売中。本書の1/3を使って、再起動不要なアドオンの作り方のテクニックや非同期処理の効率のいい書き方などを解説しています。既刊のFirefox 3 Hacksや拡張機能開発チュートリアルと併せてどうぞ。
宣伝2。日経Linux 2011年9月号から、Linuxの基礎?を紹介する漫画「シス管系女子」を連載させていただいています。そちらもよろしく。
旧題:robocopyとcygwinとタスクスケジューラでWindows Vistaを3世代バックアップのまとめ。
Vistaの標準コマンドのrobocopyでシンボリックリンクを除外してミラーリングできることが分かったってことで、とりあえずこんな風にしてみた。前提は以下の通り。
シェルスクリプトはこう。
#!/bin/sh
# 日付を含んだ名前のフォルダにする
destdirname=backup`date +%Y-%m-%d_%H-%M-%S`
destparentdir=/cygdrive/z
# robocopyに渡すためのWindows形式のパス。(ひょっとして不要?)
destparentdir_win=z:\\
# 最終更新日が一番古いフォルダの名前を取得する。
cd ${destparentdir}
targetdirname=`ls backup* -drt | grep -m1 "^backup"`
# で、それを日付を含んだ名前に変える。
mv "./${targetdirname}" "./${destdirname}"
destdir=${destparentdir}/${destdirname}
destdir_win=${destparentdir_win}\\${destdirname}
echo "backup to ${destdir_win}"
# Cドライブバックアップ用のフォルダがなければ作成。
# (後から他のドライブのバックアップも取りたくなった時のため)
if [ -d "$destdir/c" ]
then
echo "old backup exists"
else
mkdir "$destdir/c"
fi
# 古いログを削除。
rm ${destdir}/log.txt
# robocopyでミラーリング。
# * シンボリックリンクは除外(/XJD、/XJF)
# * リトライはしない
# * ログをファイルに出力
robocopy /MIR /ZB /SEC /SECFIX /XJD /XJF /R:0 /LOG:${destdir_win}\\log.txt "c:\\" "${destdir_win}\\c\\"
exit
シェルスクリプトは改行コードをLFにしとかないとbashがエラーを起こすので、気をつけないといけない。いつもそれを忘れてミスる。
で、タスクスケジューラで時々走らせる(bash.exeの引数にスクリプトを渡す)。とりあえずテストって事で3日に1回やってみよう。バックアップ間隔は後で変えるかも。期待通りに動いてるかどうか、後日要チェックだ。
追記。ちょっとスクリプトを修正した。よく考えたらフォルダ名自体を日付にしとけばもっとわかりやすかった……
追記。っつーかそもそもVistaには標準で便利なバックアップ機能があるんですね。知らんかった(マヌケ)。しかし一番魅力的なComplete PCバックアップはHome Premiumには無くてBusiness以上のみ……Home Premiumで使えるバックアップ機能の範囲ではレジストリ等はバックアップできないみたいだし、シャドウコピーも無理みたいだし、もうこれでいいかなあ。つまり、このエントリの内容は「Windows Vista Home Premium以下のエディションでうそっこシャドウコピーとうそっこComplete PCバックアップを
の末尾に2011年11月2日時点の日本の首相のファミリーネーム(ローマ字で回答)を繋げて下さい。例えば「kan」なら、「2009-03-10_backup.trackbackkan」です。これは機械的なトラックバックスパムを防止するための措置です。
writeback message: Ready to post a comment.