
シナリオ:
- カメラを使用してコンテンツを CF カードに記録します。
- CF カードの内容を、名前の付いたフォルダー (例: 20120311-D01) 内のローカル HD にコピーします。スクリプトを変更して、使用したい名前を更新してもかまいません。フォルダーに自動的に名前が付けられる必要はありません。
- ローカル HD フォルダーの内容を USB HD (2 番目のコピー) にコピーします。
- CF カードを消去します。
以前使用していた Windows システムではなく、MacBook Air にトラベル キットをアップデートしました。以前のセットアップでは、手順 2 と 3 に robocopy スクリプトを使用していました。追加の利点は、手順 3 がミラー操作 (同期/更新) としてセットアップされていたため、写真やビデオの後処理を行う時間があれば再実行して、変更されたファイルのみを同期できることです。
私は OSX を初めて使用しており、調査スキルが乏しいため、「ditto」または「rsync」を使用することになり、「carbon copy cloner」と「superduper」を調べるように言われました。
つまり、CF カードの内容を Macbook Air にコピーし、セキュリティのために 2 番目のコピーを外付け USB ドライブにコピーする簡単な方法が欲しいのです。
答え1
私は通常、スクリプトで rsync -av /home/source/folder/here /Volumes/Disk1/destination/folder/here を実行し、スケジュールには Lingon を使用します。Crontab は実際には機能しませんでしたが、Lingon は常に機能します。2.2 の無料の GPL ダウンロードを見つけましたが、私の場合は完全に正常に機能しています。バージョン 3 を Mac App Store から直接 3 ドルで購入することもできます。すべてのネットワーク ドライブ、接続された USB/Firewire ドライブは、/Volumes ディレクトリに独自のフォルダーとして保存されていることに注意してください。お役に立てば幸いです。
答え2
最初に試すべきことはヘーゼル次のようにシェル スクリプトを変更してみることもできます。
#!/bin/bash
dir1=/Volumes/CF/Photos
[[ ! -e "$dir1" ]] && exit
dir2=~/"Pictures/Photos"
mkdir -p "$dir2"
i=1
date="$(date +%Y%m%d)"
target="$dir2/$date-D$(printf %02d $i)"
while [[ -e "$target" ]]; do
((++i))
target="$dir2/$date-D$(printf %02d $i)"
done
mkdir "$target"
mv "$dir1" "$target"
echo "Moved $dir1/ to $target/"
dir3="/Volumes/Backup/Photos"
[[ ! -e "$dir3" ]] && exit
rsync -a "$dir2" "$dir3"
echo "Copied $dir2/ to $dir3/"
CF ボリュームがマウントされるたびに (または CF ボリューム上の一部のファイルが変更されるたびに) これを実行するには、たとえば次のようにプロパティ リストを保存し~/Library/LaunchAgents/com.superuser.411351.plist
、 でロードしますlaunchctl load ~/Library/LaunchAgents/com.superuser.411351.plist
。
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE plist PUBLIC -//Apple Computer//DTD PLIST 1.0//EN
http://www.apple.com/DTDs/PropertyList-1.0.dtd>
<plist version="1.0">
<dict>
<key>Label</key>
<string>com.superuser.411351</string>
<key>Program</key>
<string>/usr/bin/copyphotos</string>
<key>WatchPaths</key>
<array>
<string>/Volumes/CF/</string>
</array>
</dict>
</plist>