Usando o rsync para fazer backup


13

Atualmente, faço backup do conteúdo de um disco rígido externo A (1) excluindo tudo no disco rígido externo de destino B e (2) copiando tudo de A para B (no Finder). O disco rígido externo contém apenas "dados básicos" (pastas, imagens, vídeos, documentos etc.), nada extravagante / estranho.

Mas com todas as incríveis ferramentas gratuitas que existem por aí, não consegui encontrar uma ferramenta decente para backup (sugestões aceitas).

Eu quero automatizar isso. Depois de algumas pesquisas, parece que posso usar rsync. Eu quero automatizar isso usando isso rsyncpara evitar a cópia de arquivos que já estão no disco rígido de destino (é claro, se uma alteração tiver sido feita, eu quero atualizar o arquivo / pasta; o mesmo com arquivos / pastas excluídos ou novos arquivos / folders; a idéia é imitar o que costumo fazer manualmente com o Finder).

Cheguei a esse ponto

rsync -av --progress --delete /Volumes/A/ /Volumes/B

Agora o log está cheio de arquivos cujo nome começa com .ou ._ou mesmo ._.. Eles são necessários?

Questão

Como posso copiar apenas os arquivos importantes, deixando todos os que não importam para trás. Por exemplo, se eu tiver photo.png, espero copiar photo.png, não ._photo.pngou muitos arquivos.

O que --excludeou --exclude-frompode ser usado com segurança em um Mac? Pode ser uma boa regra "copiar apenas qualquer coisa que o Finder mostre", que é o que eu copiaria se passasse manualmente por todas as pastas.

 Pergunta extra

É -av --progress --deletesuficiente? Estou cometendo um crime ou arriscando alguns dados? Quais opções você usaria.

Por favor, apoie sua resposta com alguns argumentos, eu agradeceria.

Estou procurando uma maneira de automatizar o rsyncque parece bastante poderoso e gratuito.


Comentários não são para discussão prolongada; esta conversa foi movida para o bate-papo .
bmike

Na estratégia descrita no primeiro parágrafo, o que acontece se depois de (1) - excluir tudo em B - um problema sério acontece com A? Você pode perder o acesso aos dados em A e em seu backup anterior. Se o seu armazenamento de backup tiver espaço suficiente, que tal excluir o backup somente após a conclusão de um backup mais recente?
Ricardo

1
O link de @ bmike para a conversa que foi movida para o bate-papo está quebrado.
Merchako

Respostas:


17

Para máxima segurança, copie tudo

A opção mais segura é copiar tudo , incluindo arquivos de metadados invisíveis.

Os arquivos tendem a existir por um motivo e à medida que o software muda, o mesmo ocorre com a existência, a finalidade e o conteúdo desses arquivos de metadados. Copiar tudo reduzirá a carga de manutenção e oferecerá tranqüilidade de que nada está sendo perdido.

O arquivo de log criado por rsyncserá tecnicamente envolvido pela própria natureza de rsyncser uma ferramenta de linha de comando. Considere a possibilidade de apresentar uma saída codificada arrumada, com metadados e talvez até com códigos coloridos para o usuário verificar. Você pode fazer isso com uma ampla variedade de ferramentas e linguagens de script. Por favor, faça mais perguntas aqui na Pergunte diferente e em StackOverflow se você precisar de ajuda com esta abordagem.

Excluir último e copiar recursos do OS X

Com relação aos rsyncsinalizadores, dê uma olhada na pergunta A maneira mais rápida e segura de copiar dados massivos de uma unidade externa para outra . Nesta pergunta, alguns sinalizadores adicionais são usados ​​e explicados:

sudo rsync -vaE --progress --delete-after /Volumes/SourceName /Volumes/DestinationName

Nessa situação, Eele garantirá que os garfos de recursos e outras propriedades específicas do Mac sejam copiados.

Você pode considerar --delete-afterevitar a exclusão até que a cópia seja concluída; observe que essa abordagem exigirá uma unidade de destino com o dobro do tamanho da fonte.

Possíveis exclusões

Uma resposta a uma pergunta relacionada: Como omitir arquivos de renderização FCPX de um backup do Time Machine? , forneceu um link útil de arquivos e pastas do OS X que podem ser excluídos da maioria dos backups . Este link fornece uma lista prática de padrões de arquivos, pastas e caminhos que você pode excluir.

Incluir arquivos de ponto

Há boas razões para fazer backup de arquivos começando com pontos, .*arquivos correspondentes.

Alguns softwares mantêm preferências, configurações e outras informações de valor em pastas na parte superior da pasta do usuário em pastas com prefixo de ponto invisível. A execução ls -la ~/revelará essas pastas e arquivos.

Se algum usuário usar ou possuir um software que, por sua vez, use o software de controle de versão, faça backup dos arquivos de ponto. Programas como o subversion e o git armazenam informações críticas em suas pastas de pontos. Essas pastas ocultas podem ser espalhadas pelo sistema de arquivos, onde um projeto é retirado.

Destaque e acesso ao disco

O Spotlight é o serviço de pesquisa do OS X. O Spotlight usa o mdworkerprocesso para indexar e atualizar o catálogo de pesquisa. Se você estiver preocupado com uma possível corrupção de disco ou cópias lentas, a desativaçãomdworker durante a execução rsyncpode ajudar. Pessoalmente, deixo o Spotlight em execução durante grandes rsynctransferências.


3
A opção mais segura é copiar tudo, incluindo arquivos de metadados invisíveis. Mas o mesmo link do Carbon Copy Cloner diz que existem certos arquivos que são criados automaticamente, portanto, eles podem até ser corrompidos se você copiou rsync.
Manuel

1
Você pode adicionar um exemplo completo para futuros leitores. Encontrei duas fontes, uma e duas (mais a terceira que você vinculou); Deixo-os aqui para referência futura.
Manuel

1
"Existem boas razões para fazer backup de arquivos começando com pontos": sim! Esses arquivos estão ocultos (do Finder para os manequins), mas na maioria das vezes são arquivos muito importantes.
dan

1
Os pontos-chave Ee --delete-aftersão os que fazem desta resposta uma vitória.
dan

1
@danielAzuelos Desde então -E, nas versões mais recentes, há as -Xque eu vejo recomendadas em alguns lugares, qual é a correta? Ou os dois? Gostaria de um pseudo-completo e atualizado que cubra a maioria das preocupações gerais. Copiar arquivos Spotlight seria mais fácil e rápido do que permitir que eles fossem gerados? Como posso parar o Spotlight para que não mexa enquanto isso? E caffeinateo processo? Ou pode ser, se é apenas uma lista de backup, não a torna indexável pelo Spotlight, muito menos preocupações, etc. Muitas dessas perguntas foram respondidas com certeza.
Manuel

5

Se você estiver usando a rsyncversão 3.0.6, como no Carbon Copy Cloner, ou 3.1.2, no Homebrew, você poderá usar os argumentos do Carbon Copy Cloner:

rsync -A -X -H -p --fileflags --force-change -l -N -rtx --protect-decmpfs --numeric-ids -go --delete-during --backup --backup-dir=</PATH/TO/STICK/BACKUP_when_using_delete> --protect-args <SRC>/ <DEST>


--protect-decmpfsnão está mais disponível a partir do 3.1.3, consulte github.com/Homebrew/homebrew-core/pull/23415 .
user74686

4

Eu desaconselho a remoção de metadados durante um backup, particularmente os arquivos de ponto, por exemplo ._$filename, no entanto, se você realmente deseja excluir os arquivos de ponto do seu rsynccomando, adicione --exclude '.*'-o.

rsync -av --exclude '.*' --progress --delete /Volumes/A/ /Volumes/B

Isso é bom. Eu não tinha certeza se a remoção de todos os arquivos de ponto seria problemática (a propósito, existe alguma diferença entre '.*'e '/.*'?). Eu não acho que o Finder copie todos eles, podem ser apenas alguns associados. Nesse caso, eu preferiria excluir apenas aqueles que são desnecessários (por exemplo, .DS_Store). E sim, aqueles que podem ser importantes, mas que eu não quero ter no meu log, posso filtrar com expressões regulares.
Manuel

1
O que o Finder copia não é documentado, e essa é a fonte do problema de todos ao criar uma política de backup. Você deve manter uma cópia de todos os arquivos se desejar um backup que possa ser usado exatamente no lugar do Adisco.
dan

@danielAzuelos Não é esse o caso, caso o disco rígido principal A morra, comprarei um terceiro disco rígido C, copio do disco rígido B para o disco rígido C e provavelmente começo a usar um de B ou C. Repito: que este não é o tipo de backup que é necessário usar, como o SuperDuper faz. Minhas fotos são melhores em dois lugares, em vez de apenas um.
Manuel Manuel

4

Não estou completamente satisfeito com as respostas atuais, mas tentarei abordar aqui algumas das possibilidades que vi na Web tentando encontrar uma boa configuração rsync.

E, a propósito, se alguém está interessado no Time Machine como cópias, existe rsnapshot. E também há o Unison para sincronizações bidirecionais. Além disso, existem realmente algumas GUIs, como o Utilitário de Backup e o arRsync ; não é exatamente o que eu estava procurando, mas eles podem fazer o trabalho para alguém.

Primeiro, minha única intenção era duplicar fotos e vídeos, de modo que a cópia exata não era necessária e, portanto, não havia necessidade de me preocupar muito . Na verdade, a maioria das minhas dúvidas era se eu poderia excluir tudo (o mesmo que aconteceria se, digamos, eu baixasse uma foto da Internet, eu apenas baixasse um .png, todo o resto não é baixado, mas gerado automaticamente ).

Aqui está uma lista não estruturada de pensamentos que você pode querer levar em consideração

  • Se você deseja garantir que seu laptop não entre no modo de suspensão, convém que caffeinateo processo seja realizado caffeinate -s rsync -av .... Retirado daqui .

  • Se você estiver fazendo cópias locais, como no meu caso, ou mesmo se a conexão à Internet não for muito lenta, não use a -zopção (compactação) e use -W(transferir arquivo inteiro, em vez de transferências delta; esse é o padrão quando local) e provavelmente use --inplacepara fazer transferências rapidamente. Retirado daqui .

  • Você pode usar --delete-afterpara que qualquer arquivo seja primeiro transferido e depois movido no destino (e excluído o original) e seja mais seguro do que excluir antes da transferência ou durante a transferência.

  • Você pode interromper a transferência pressionando ctrl + Ce ela será interrompida corretamente. Retirado daqui . Esse foi um dos meus medos com o SuperDuper !, se você precisar interromper uma transferência, receberá a mensagem "Você deixará o disco rígido em um estado desconhecido ...".

  • Nas versões recentes, há o --info=progress2que acrescenta ainda mais detalhes -v.

  • Existem -P(iguais --partiale --progress) que deixarão os arquivos transferidos no meio para que você possa continuar quando reiniciar o processo (se, por algum motivo, não puder terminar a sincronização de uma só vez).

  • Pode-se estar interessado em interromper o Spotlight ou o TimeMachine antes de fazer a cópia e reativá-los após a transferência. E até desative o Spotlight para o disco externo.

  • Outras opções usadas em todas essas referências incluem -x(ou --one-file-system), -E( --executability), -H( --hard-links), -X( --xattrs), -A( --acls), e --sparse, --hfs-compression, --protect-decmpfs. Você pode querer olhar para eles.

Para mim, parece um comando básico (eu poderia usar mais opções, mas isso é suficiente para um exemplo):

caffeinate -s rsync -av --delete-after --progress --stats --exclude-from 'excludefile.txt' \
  "/Volumes/SrcHDD/" "/Volumes/DstHDD" # note the trailing slash / after the source

Agora, no meu caso, eu poderia incluir {*.jpg,*.png,*.mp4,*.txt,*.pdf,…}e ninguém diria "você também precisa de arquivos do sistema", mas como não quero pesquisar para obter todo o tipo de arquivo possível de que tenho arquivos, prefiro excluir. E há coisas que não apenas podem ser, mas parecem convenientes de excluir.

Encontrei alguns links, pegue o que quiser:

  1. https://bombich.com/kb/ccc4/some-files-and-folders-are-automatically-excluded-from-backup-task

  2. https://gist.github.com/tvwerkhoven/4541989

  3. https://github.com/necolas/dotfiles

  4. https://gist.github.com/shkm/5531679

  5. http://www.hackurmac.com/2014/08/backing-up-and-restoring-your-hackintosh.html

  6. https://github.com/jedda/Counterpart

  7. http://alanwsmith.com/rsync-exclude-list-for-mac-osx

E a partir daí você provavelmente conseguiria o que é seguro ou sensato ignorar. Aqui está a lista completa (acabei de remover as duplicatas)

.HFS+ Private Directory Data*
/.journal
/.journal_info_block
.AppleDouble
.AppleDB
/lost+found

.metadata_never_index
.metadata_never_index_unless_rootfs
/.com.apple.timemachine.donotpresent
.VolumeIcon.icns
/System/Library/CoreServices/.disk_label*
/TheVolumeSettingsFolder

.DocumentRevisions-V100*
.Spotlight-V100
/.fseventsd
/.hotfiles.btree
/private/var/db/systemstats

/private/var/db/dyld/dyld_*
/System/Library/Caches/com.apple.bootstamps/*
/System/Library/Caches/com.apple.corestorage/*
/System/Library/Caches/com.apple.kext.caches/*

/.com.apple.NetBootX

/Volumes/*
/dev/*
/automount/*
/Network/*
/.vol/*
/net

/private/var/folders/zz/*
/private/var/vm/*
/private/tmp/*
/cores/*

.Trash
.Trashes

/Backups.backupdb
/.MobileBackups
/.MobileBackups.trash
/.MobileBackups.trash

Library/Mobile Documents.*
.webtmp

/Library/Caches/CrashPlan
/PGPWDE01
/PGPWDE02
/.bzvol
/Library/Application Support/Comodo/AntiVirus/Quarantine
/private/var/spool/qmaster
$Recycle.Bin
Saved Application State
Library/Preferences/ByHost/com.apple.loginwindow*

.AppleDesktop
.com.apple.timemachine.supported
Network Trash Folder
/Library/Caches/*
/private/var/spool/postfix/*
$RECYCLE.BIN
/stuff/*
/afs/*
/private/var/run/*
/Previous Systems.localized
/tmp/*
.dbfseventsd
.DS_Store
.PKInstallSandboxManager
.SymAV*
.symSchedScanLockxz
.TemporaryItems
Desktop DB
Desktop DF
hiberfil.sys
pagefile.sys
Recycled
RECYCLER
System Volume Information
Temporary Items
Thumbs.db
AUTORUN.INF
Autorun.inf
autorun.inf

3

Eu usei o rsync para backups em vários trabalhos e o uso em casa.

Eu recomendo, mas com algumas modificações. Como uma ferramenta de backup, é ótimo, mas como uma ferramenta de arquivamento, ela cai um pouco. Sim, ele copia tudo, mas você não obtém versões de tudo, sempre obtém apenas as versões mais recentes.

Eu usei este guia http://www.mikerubel.org/computers/rsync_snapshots/ como ponto de partida. Leia a página inteira. Ele explica muito bem as opções e descreve como você pode implementar backups incrementais. E, surpreendentemente, o artigo tem mais de 10 anos, mas ainda é aplicável hoje. Tenho que amar o unix.


1
Obrigado. De qualquer forma, eu queria abordar as considerações especiais que se pode considerar no Mac OS X. Eu realmente não queria apenas um guia rsync. Em qualquer caso, o bom link, que abrange uma série de rsyncmas existe a partir de hoje uma ferramenta para fazer exatamente isso: rsnapshot.
Manuel
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.