2011/08/30

葉月1.PowerShellのプロファイルとSyncToyを利用したバックアップ

僕が使っているのは、MSが出しているSyncToyというツール。
これを利用するとフォルダ間でファイル同期を行ってくれる。手軽に使えるのでなかなか良い

SyncToy

@IT SyncToyツールで手軽にバックアップを行う

コマンドプロンプトでも実行できるので、USBメモリをさした場合にプロファイルを読み込み、
その過程で上記ソフトを実行するよう設定する。




1. SyncToyをインストール
  USBメモリ上にSyncToyをインストールする。ここでは、以下のフォルダに展開した。
E:\program\buso-sync\x64\

e:をUSBメモリをさした場合のドライブ。

2.利用するPCでPowerShellのプロファイルをいじる
プロファイルにもいくつか種類があります。

TechNetマガジン プロファイルの力
http://64.4.10.145/ja-jp/magazine/cc895642

  • %windir%\system32\WindowsPowerShell\v1.0\profile.ps1 コンピュータのすべてのユーザーとすべてのシェルに適用されるプロファイル。
  • %windir%\system32\WindowsPowerShell\v1.0\Microsoft.PowerShell_profile.ps1 コンピュータのすべてのユーザーと Microsoft.PowerShell シェルに適用されるプロファイル。
  • %UserProfile%\Documents\WindowsPowerShell\profile.ps1 現在のユーザーとすべてのシェルに適用されるプロファイル。
  • %UserProfile%\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1 現在のユーザーと Microsoft.PowerShell シェルに適用されるプロファイル。
僕は、普通のprofile.ps1を編集してる。
USBメモリをさした場合に、該当のスクリプトがあった場合に処理を実行するよう、以下を記述

profile.ps1
if ( $(test-path "e:\config\config.ps1"))
{
        . e:\config\config.ps1
        write-host "++++ config アクセス完了 ++++"
}

もっぱらconfig.ps1にUSBメモリをさした場合に実行するプロファイルとして記述している。
今回は、ここにSyncToyの呼び出しをするよう追記する。

3.SyncToyを利用するための準備をする
フォルダ同期の受け皿を作っておく。ここでは下記のパスとする。
C:\Users\buso\Desktop\buso-sync
次に、あらかじめ同期するフォルダペアを登録しておく。
詳しくは上記の@ITの記事を参考にしてもらいたい。



ここではフォルダペア名を"powershell"として、
C:\Users\buso\Desktop\buso-sync と、USBメモリ先である E: を同期するよう設定した。

4.config.ps1からSyncToyを呼び出す
config.ps1にSyncToyを呼び出すよう追加する。

e:\config\config.ps1
if ($env:computername -eq "buso-pc") {
    E:\program\buso-sync\x64\SyncToyCmd.exe -R powershell
}

上記は"buso-pc" に接続した場合の設定。
SyncToyCmd.exe でフォルダペア名を指定すると、登録した設定に応じて同期される。
接続するコンピュータに応じてフォルダペア名を変えて、同期方法を変更したりするなど応用も可能。


実際にUSBメモリをさした場合にPowerShellを起動したときに走る処理。
この他、僕はaliasを読み込んだりさらにスクリプトを呼びだしたりと
 config.ps1 に色々設定を書いてます。


スポンサーリンク

スポンサーリンク