OSX コンテンツ バックアップのための繰り返しファイル コピー操作のスクリプト作成

OSX コンテンツ バックアップのための繰り返しファイル コピー操作のスクリプト作成

シナリオ:

  1. カメラを使用してコンテンツを CF カードに記録します。
  2. CF カードの内容を、名前の付いたフォルダー (例: 20120311-D01) 内のローカル HD にコピーします。スクリプトを変更して、使用したい名前を更新してもかまいません。フォルダーに自動的に名前が付けられる必要はありません。
  3. ローカル HD フォルダーの内容を USB HD (2 番目のコピー) にコピーします。
  4. 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>

関連情報