Создание сценария повторной операции копирования файлов для резервного копирования содержимого OSX

Создание сценария повторной операции копирования файлов для резервного копирования содержимого OSX

Сценарий:

  1. Запись контента с камеры на карту CF.
  2. Скопируйте содержимое карты CF на локальный жесткий диск в именованную папку (например, 20120311-D01). Я не против изменить скрипт, чтобы обновить имя, которое я хочу использовать, не обязательно, чтобы папка была автоматически названа.
  3. Скопируйте содержимое локальной папки жесткого диска на USB-накопитель (вторая копия).
  4. Очистите 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>

Связанный контент