Script de operação repetida de cópia de arquivo para backup de conteúdo OSX

Script de operação repetida de cópia de arquivo para backup de conteúdo OSX

Cenário:

  1. Grave conteúdo usando a câmera no cartão CF.
  2. Copie o conteúdo do cartão CF para o HD local na pasta nomeada (por exemplo, 20120311-D01). Não me importo de mudar o script para atualizar o nome que desejo usar, não precisa ser uma pasta com nome automático.
  3. Copie o conteúdo da pasta HD local para USB HD (segunda cópia).
  4. Limpe o cartão CF.

Atualizei meu kit de viagem para ser o MacBook Air em vez do sistema Windows que usei anteriormente. Na configuração anterior, usei scripts robocopy para as etapas 2 e 3. O benefício adicional foi que a etapa três foi configurada para ser uma operação de espelho (sincronização/atualização), portanto, se eu tivesse tempo para fazer o pós-processamento de fotos ou vídeos, poderia executar novamente e sincronizaria apenas os arquivos alterados.

Sou novo no OSX e minhas poucas habilidades de pesquisa revelaram-se usando possivelmente "idem" ou "rsync" e me disseram para pesquisar "cloner de cópia carbono" e "superduper".

Resumindo, gostaria de um método simples para copiar o conteúdo do meu cartão CF para o meu Macbook Air e, em seguida, uma segunda cópia para uma unidade USB externa por segurança.

Responder1

Normalmente faço rsync -av /home/source/folder/here /Volumes/Disk1/destination/folder/here em meus scripts com rsync e, para agendamento, uso o Lingon. O Crontab realmente não estava funcionando para mim, mas o Lingon funciona o tempo todo. Encontrei um download gratuito da GPL 2.2 e funciona perfeitamente para mim, mas você pode até comprar a versão 3 diretamente na Mac App Store por US$ 3. Lembre-se de que todas as unidades de rede e unidades USB/Firewire conectadas estão no diretório /Volumes como sua própria pasta. Espero que isto ajude!

Responder2

A primeira coisa que você provavelmente deveria tentar seriaAvelã. Você também pode tentar modificar um script de shell como este.

#!/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/"

Para executá-lo sempre que o volume CF for montado (ou alguns arquivos nele forem modificados), você pode salvar uma lista de propriedades como esta, por exemplo, ~/Library/LaunchAgents/com.superuser.411351.pliste carregá-la com 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>

informação relacionada