
Сценарий:
- Запись контента с камеры на карту CF.
- Скопируйте содержимое карты CF на локальный жесткий диск в именованную папку (например, 20120311-D01). Я не против изменить скрипт, чтобы обновить имя, которое я хочу использовать, не обязательно, чтобы папка была автоматически названа.
- Скопируйте содержимое локальной папки жесткого диска на USB-накопитель (вторая копия).
- Очистите CF-карту.
Я обновил свой дорожный комплект, чтобы использовать MacBook Air вместо системы Windows, которую я использовал ранее. В предыдущей настройке я использовал скрипты robocopy для шагов 2 и 3. Дополнительным преимуществом было то, что шаг 3 был настроен на зеркальную операцию (синхронизация/обновление), поэтому если у меня было время на постобработку фото или видео, я мог бы повторить попытку, и она синхронизировала бы только измененные файлы.
Я новичок в OSX, и мои плохие навыки исследования выявились при использовании, возможно, «ditto» или «rsync», и мне посоветовали изучить «carbon copy cloner» и «superduper».
Короче говоря, мне нужен простой способ скопировать содержимое моей карты CF на мой Macbook Air, а затем сделать вторую копию на внешний USB-накопитель для безопасности.
решение1
Обычно я делаю rsync -av /home/source/folder/here /Volumes/Disk1/destination/folder/here в своих скриптах с rsync, а для планирования я использую Lingon. Crontab у меня действительно не работал, но Lingon работает все время. Я нашел бесплатную загрузку GPL 2.2, и она отлично работает у меня, но вы даже можете купить версию 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 (или изменяются некоторые файлы на нем), вы можете сохранить список свойств, например, такой, ~/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>