Parece-me que muitos profissionais de mídia e cineastas não usam o rsync
, o utilitário de linha de comando de código aberto e gratuito disponível no Mac, Linux e Windows. É uma ferramenta poderosa, rápida, leve e madura que é perfeita não apenas para simples ingesta de mídia, mas também para transferências complicadas envolvendo muitas placas de câmera ou discos rígidos. Pode até ser automatizado para backups confiáveis ??e eficientes. Embora seja mais comumente usado por profissionais de TI, é altamente relevante para cineastas. DITs, gerentes de dados e profissionais de pós-produção de todos os tipos acharão inestimável. É certo que a curva de aprendizado do rsync
pode ser muito mais acentuada do que a de outras mídias profissionais que usam aplicativos com GUIs, mas a proficiência com o rsync
parece uma superpotência.
O que é o rsync e por que eu o usaria?
A página “Gerenciamento de Dados” da Arri descreve o rsync
:
Rsync é um aplicativo de terminal gratuito. Ele requer um especialista em computador para executar uma transferência de dados verificada e, mesmo assim, é bastante complicado de usar. Se ainda não estiver instalado no seu computador, você pode encontrá-lo em http://rsync.samba.org .
Tanto quanto eu posso dizer, o rsync
permanece superior a praticamente todos os outros aplicativos profissionais para ingerir mídia, como o Imagine Products ShotPut Pro, o Red Giant Offload, o Clone Tool do DaVinci Resolve, o Pomfort Silverstack ou o CopyToN. Cada um desses aplicativos é ótimo em seus próprios direitos, e eles entregam o que prometem, mas podem ser lentos, caros e exigem muita CPU. Em contraste, o rsync
é rápido, totalmente gratuito e computacionalmente leve.
Verificação de soma de verificação, retomada de transferências interrompidas e backups regulares e automatizados
Todos os aplicativos de nível profissional usam verificação de soma de verificação e o rsync
não é exceção. Kylee Peña escreveu na CreativeCOW sobre a função e a importância da verificação de soma de verificação para transferências de mídia . Em resumo, de acordo com Peña, a verificação de soma de verificação “é um método para detectar erros ao copiar um arquivo de um lugar para outro”. A verificação de soma é uma maneira eficiente de garantir que absolutamente todos os bytes de uma fonte sejam transferidos corretamente para seu destino. Se você se preocupa com a integridade da sua mídia, você não deve simplesmente arrastar e soltar arquivos de um disco rígido para outro através do Finder ou Explorer, que não oferece essa proteção.
Para executar uma soma de verificação em um arquivo é usar um método criptográfico para dar a esse arquivo uma espécie de “impressão digital”. A “impressão digital” é uma soma de verificação e tem a forma de uma seqüência de letras e números. Se dois arquivos grandes fossem diferentes, mesmo que apenas um bit, suas somas de verificação quase sempre seriam drasticamente diferentes. No contexto das transferências de mídia, a verificação de soma de verificação é o método de comparar a soma de verificação de um arquivo na mídia de origem e de destino para garantir que cada bit seja transferido adequadamente.
Como outros programas comerciais de mídia comercial, o rsync
verifica cada bit que ele transfere por checksum, mas ao invés de computar somas de verificação separadamente tanto na origem quanto no destino, ele usa uma “ soma de verificação contínua ”, que é mais rápida.
Para uma transferência típica, o rsync
compara nomes de arquivos e registros de data e hora de arquivos nas árvores de diretórios de origem e de destino para avaliar quais arquivos devem ser transferidos. No entanto, se houver alguma dúvida sobre se um ou mais arquivos são diferentes, mas podem compartilhar nomes de arquivo idênticos e carimbos de data e hora idênticos, o rsync
pode ser executado de forma a comparar todas as somas de verificação nos diretórios de origem e de destino e transferir somente os itens cujos checksums diferem.
Devido às comparações entre os diretórios de origem e de destino, seja por nome de arquivo e registro de data e hora ou também por soma de verificação, o rsync
pode efetivamente retomar as transferências que foram interrompidas ou interrompidas sem ter que transferir os dados que já foram transferidos com sucesso antes da interrupção. Isso também significa que se você configurar o rsync
para ser executado de forma automatizada, a largura de banda não será desperdiçada copiando os mesmos arquivos repetidamente.
Arquivos de log e responsabilidade
Assim como os outros aplicativos profissionais, o rsync
pode fornecer extensos arquivos de log, para que todos os envolvidos na cadeia de custódia da gravação possam documentar exatamente como e quando teriam transferido a gravação. Os arquivos de log mostram toda a atividade do rsync
durante suas transferências. Se você precisar descobrir se um determinado item foi transferido, poderá verificar o arquivo de log.
Plataforma cruzada
Como o rsync
pode ser executado no bash
em qualquer sistema UNIX ou UNIX, ele pode ser usado no MacOS da Apple , no Linux ou no Microsoft Windows . o macOS é UNIX e seu shell padrão é bash
, as distribuições Linux normalmente incluem o bash
para seus shells padrão e, agora, através do Windows Subsystem para Linux no Windows 10, o bash
pode ser executado no Ubuntu no Windows .
Noções básicas de Command line
Para entender como usar o rsync
, você precisa entender como usar a linha de comando e, mais especificamente, o bash
.
Em linhas gerais, existem dois tipos de interfaces de computador: interface de linha de comando (CLI) e interface gráfica de usuário (GUI). Na história da computação, os CLIs foram criados primeiro e podem ser conhecidos por clichês de filmes como nos Jogos de Guerra . Hoje em dia, para não desenvolvedores, as GUIs são o que a maioria das pessoas usa a maior parte do tempo.
Usando a linha de comando é uma maneira de interagir com o computador, inserindo linhas de texto que seguem regras e sintaxes específicas. Qual shell seu computador usa e qual programa específico você está usando dita quais regras e sintaxes você precisa usar. Enquanto uma GUI pode exibir janelas, painéis, botões, mostradores, imagens e texto, a linha de comando requer uma compreensão de quais palavras e caracteres devem ser digitados para que o programa possa ser executado como você deseja.
Então, por que usar um CLI? O curso introdutório da Linux Foundation explica que as GUIs facilitam as tarefas, mas os CLIs tornam possíveis tarefas difíceis. O conjunto de recursos do rsync
é impressionante por si só, mas o fato de que ele pode ser usado em conjunto com outros recursos do bash
e outros programas de linha de comando, como o cron
torna incrivelmente poderoso e versátil.
Para os fins deste artigo, vamos supor que você está usando o aplicativo Terminal no macOS especificamente, mas os principais insights sobre o bash
e o rsync
aplicam ao bash
no Ubuntu no Windows, bem como às principais distribuições do Linux.
bash bash
Navegando em diretórios
Quando você abre pela primeira vez uma janela do Terminal, você estará usando o bash
, que é o shell padrão do macOS. Dentro do Terminal, você pode navegar entre diferentes arquivos e pastas em seu sistema. Estes são os mesmos arquivos e pastas que você está acostumado a ver no macOS Finder, mas como esta é a linha de comando, você terá que navegar para dentro e fora dos diretórios com comandos bash
específicos.
No bash
, você está sempre operando dentro de uma pasta no seu sistema. Este é o seu "diretório de trabalho atual". Você sempre pode verificar em qual diretório você está digitando pwd
e pressionando Enter.
Normalmente, quando você abre o Terminal pela primeira vez, você estará na sua pasta de usuário, como /Macintosh HD/Users/yourusername/
. Se você digitar ls
e pressionar Enter, o Terminal listará o conteúdo do diretório de trabalho atual, que, se você estiver na sua pasta de usuário, normalmente seria as subpastas padrão:
Applications
Desktop
Documents
Downloads
Movies
Music
Pictures
Public
Para navegar em um desses diretórios, digite cd
seguido do nome do próprio diretório. Se você quiser entrar na pasta Movies
, digite cd Movies
e pressione Enter. Então, se você digitar pwd
seguido da tecla Enter, o Terminal retornará /Macintosh HD/Users/yourusername/Movies/
. Então esse é o seu novo diretório de trabalho atual.
Para navegar de volta para um nível acima de /Macintosh HD/Users/yourusername/
, você pode digitar cd ..
e pressionar Enter.
Essa é uma maneira fácil de navegar para diretórios específicos que estão um nível abaixo ou acima do diretório de trabalho atual, porque você só precisará digitar o nome da pasta imediata, como Movies
ou Documents
, mas também pode navegar para qualquer diretório específico em qualquer lugar no sistema, digitando o nome completo do caminho. Então, se você está em /Macintosh HD/Users/yourusername/Desktop/Folder1
, mas você quer chegar em /Macintosh HD/Users/yourusername/Movies/Kubrick
, você pode chegar lá digitando cd /Macintosh HD/Users/yourusername/Movies/Kubrick
, e aperte Enter. Você também pode arrastar e soltar um arquivo ou uma pasta de uma janela do Finder para uma janela do Terminal, e o nome completo do caminho do arquivo ou da pasta será preenchido, onde quer que o cursor de texto esteja no Terminal.
Por conveniência, o caractere til, ~
, é um atalho em um nome de caminho para /Macintosh HD/Users/yourusername
.
Espaços
Vale a pena apontar aqui que espaços em diretórios ou nomes de arquivos devem ser tratados especialmente. Como a sintaxe do bash
para comandos usa espaços de maneiras específicas, se um nome de caminho ou nome de arquivo tiver um espaço, você deve colocar um caractere à frente do espaço para "escapar" do espaço. "Escapando" o caractere é o termo para especificar para o shell que o próximo caractere deve ser considerado como o caractere exato que está sendo inserido especificamente, e não está sendo interpretado como um espaço para a própria sintaxe do
bash
. Se um arquivo que você vê no Finder é chamado My Great Video Clip
, esse arquivo precisaria ser escrito em bash
como My Great Video Clip
.
páginas de manual
Dentro do bash
, há na verdade um compêndio de documentação para a maioria dos programas que você gostaria de usar. Estas são as man
pages, assim chamadas para “manual”. Se você estiver curioso sobre como determinados comandos funcionam ou qual sintaxe usar para fazer um programa funcionar, você pode acessar o manual do programa digitando man [program]
e digitando Enter.
Portanto, para ver o manual do rsync
, você abriria uma janela do Terminal, digitar man rsync
e pressionar Enter.
Para navegar pelas man
pages , pressione f
para avançar uma página, pressione d
para avançar meia página, pressione b
para voltar uma página ou pressione u
para voltar meia página. Para sair de uma página do man
, pressione q
.
Você também pode visualizar uma versão em HTML do rsync
na Web .
Infelizmente, muitas páginas man
funcionam como documentação detalhada para veteranos experientes, sem nenhum tipo de explicação introdutória para iniciantes – a página man
rsync
não é exceção, e é por isso que estou escrevendo este guia.
Sintaxe típica para comandos no bash
Em geral, os programas no bash
geralmente assumem a forma:
[nome do programa] - [sinalizadores] [item relevante] [outro item relevante]
Embora isso seja uma simplificação excessiva, e muitos programas funcionam de maneira diferente, em geral, as diferentes seções de um comando são separadas por espaços, e as páginas man
documentarão como usar o programa.
[name of program]
é o programa que você precisa usar. -[flags]
são opções para modificar o funcionamento do programa. [relevant item]
e [relevant other item]
são quaisquer arquivos ou pastas que estejam sendo trabalhados pelo programa. O programa pode estar movendo, copiando, juntando, dividindo ou renomeando itens, ou lendo ou alterando algo dentro dos próprios itens. Se você estiver referenciando um item dentro do diretório de trabalho atual, você pode simplesmente digitar o nome do item sozinho, mas se o item que você está referenciando existir em algum outro lugar no sistema, fora do diretório de trabalho atual, você precisa digitar o nome completo do caminho.
Compilando a versão mais recente do rsync para macOS
Problema de licenciamento da Apple com a GPLv3
Antes de nos aprofundarmos nos detalhes específicos de como usar o rsync
, precisamos ter tempo para compilar e instalar a última versão do rsync
para macOS. No momento em que escrevo, bash
no Ubuntu no Windows vem o rsync
3.1.1 do Ubuntu 16.04.02 , e as principais distribuições atuais do Linux vêm com a versão mais recente, rsync
3.1.2, mas o macOS só envia uma versão desatualizada, o rsync
2.6.9 .
A Apple inclui apenas o rsync
2.6.9 dentro da instalação padrão do macOS, porque é a última versão do rsync
que usou a GPLv2, que é uma licença de software específica para software de código aberto. Após o 2.6.9, os autores do rsync
mudaram a licença para a GPLv3. Sem se envolver nas guerras religiosas GPLv2 vs. GPLv3 , saiba que a Apple se recusa a enviar o software GPLv3, por isso, para usar a última e melhor versão do rsync
no macOS, você precisará compilá-lo você mesmo.
Como compilar o rsync 3.1.2 no macOS
Sempre que você planeja usar uma nova estação de trabalho do macOS, ou se acabou de concluir uma instalação limpa do macOS, você precisará baixar, compilar e instalar a versão mais recente do rsync
, que, até o momento, é 3.1.2. Isso só precisa acontecer uma vez e você não terá que pensar sobre isso novamente.
Antes de atualizar para o 3.1.2, você pode verificar qual versão está sendo executada digitando rsync --version
.
Em uma janela do Terminal, navegue até a área de trabalho para torná-lo seu diretório de trabalho atual.
cd ~ / Desktop
Em seguida, baixe o rsync em seu site.
curl -O http://rsync.samba.org/ftp/rsync/src/rsync-3.1.2.tar.gz
O formato de arquivo .tar
é um arquivo de "arquivo de fita", geralmente chamado de "tarball" . É um formato de arquivo para material que foi compactado, semelhante ao .zip
mais comumente usado. Então, para acessar o conteúdo dentro deste tarball, você precisará descompactá-lo com o utilitário tar
.
tar -xzvf rsync-3.1.2.tar.gz
Isso criará uma nova pasta na área de trabalho, seu diretório de trabalho atual. A área de trabalho agora deve ter uma pasta chamada rsync-3.1.2
. Como você acabou de descompactar o tarball, é possível ir em frente e excluí-lo.
rm rsync-3.1.2.tar.gz
Navegue até o diretório rsync-3.1.2
.
cd ~ / Desktop / rsync-3.1.2
Em seguida, prepare o software. Para os próximos comandos, você pode ser solicitado a baixar o Xcode para continuar. O Xcode é um ambiente de desenvolvimento integrado (IDE) criado e mantido pela Apple.
./prepare-source
Em seguida, configure o software.
./configure
Agora, comece a compilá-lo.
faço
Em seguida, mova todos os arquivos para o programa para seus locais apropriados dentro do sistema operacional.
sudo make install
sudo
é uma maneira de aumentar os privilégios de segurança . Você precisará digitar sua senha de usuário para confirmar que sim, você deseja instalar este software. Essa é a arquitetura de segurança adequada. Você não desejaria que programas maliciosos pudessem se instalar sem precisar de uma senha. Quando a linha de comando solicitar que você insira sua senha de usuário, ela não mostrará que você está digitando caracteres, mas os caracteres estão sendo registrados. Quando terminar de digitar sua senha, pressione Enter para prosseguir.
Caso você esteja curioso, George Brocklehurst escreveu sobre como os comandos ./configure
, make
e make install
funcionam.
Quando o comando sudo make install
concluído, encerre o aplicativo Terminal. Abra o Terminal novamente e insira rsync --version
novamente para verificar se você está executando 3.1.2.
Depois de verificar se o 3.1.2 está instalado corretamente, você pode excluir a pasta na sua área de trabalho executando rm -rf ~/Desktop/rsync-3.1.2
.
Usando o rsync para ingest de mídia
rsync
tem muitos recursos poderosos, mas uma das maneiras mais simples e eficazes de usá-lo é para uma simples entrada de mídia – a ingestão do conteúdo de cartões de câmera ou discos rígidos para outros discos rígidos, RAIDs ou dispositivos NAS. É útil em um carrinho DIT ou em uma instalação de pós-produção.
Usando sinalizadores
rsync
tem um punhado de sinalizadores que são particularmente úteis para a entrada de mídia. Lembre-se de que os flags nos comandos são usados ??para exercitar opções específicas para programas.
Os sinalizadores no rsync
podem ter dois formatos – letras únicas, que podem ser recolhidas após um hífen e palavras ou frases inteiras, que normalmente são separadas por espaços e precedidas por dois hífens.
Sinalizadores são diferencia maiúsculas de minúsculas.
Se você quiser usar as flags -a
, -v
e -z
, você pode executar o comando rsync -avz [source] [destination]
ou rsync -a -v -z [source] [destination]
. Geralmente é mais conveniente recolher todos os sinalizadores de uma única letra no formulário anterior.
Um comando rsync sugerido para uma ingestão única
Uma forma eficaz de usar o rsync
para uma ingestão seria usar o comando da seguinte maneira:
rsync -aihW --progress --log-file = [destino] /ingest.log [fonte] [destino]
- O sinalizador
-a
, que também tem o formato longo--archive
, é um ótimo mecanismo de cópia de propósito geral. Infelizmente, o manual não é muito claro para iniciantes, mas o sinalizador-a
é uma maneira de copiar praticamente tudo que você deseja copiar do diretório de origem para o diretório de destino. Ele informa orsync
para percorrer todos os diretórios recursivamente e enfileirar todos os atributos importantes a serem transferidos para os destinos de origem – os próprios arquivos, assim como os metadados do sistema de arquivos, comoDate Created
,Date Modified
, etc. - O sinalizador
-i
, que também tem o formato longo--itemize-changes
, mostra alguns detalhes sobre o que está acontecendo com cada arquivo. Para um consumo típico, isso mostrará apenas que você está copiando um item em particular, mas para instâncias em que um item já existe no destino, orsync
informará que o item já está "atualizado". - O sinalizador
-h
, que também possui a forma longa--human-readable
– altera a leitura de bits para bytes, o que é um pouco mais intuitivo. - O sinalizador
-W
, que também possui o formato longo--whole-file
, obriga orsync
a abandonar seu famoso "algoritmo de transferência delta". O algoritmo de transferência delta é usado principalmente para dados textuais, como código, scripts ou bancos de dados. e transfere apenas as partes dos arquivos que foram alterados, o que economiza largura de banda. É um bom recurso para dados textuais, mas não é relevante para arquivos de mídia, portanto não há necessidade de desperdiçar o poder computacional. - O sinalizador
--progress
mostra o progresso na janela do Terminal para a transferência atual. A páginaman
realmente tem uma boa descrição para este flag, “Esta opção diz aorsync
para imprimir informações mostrando o progresso da transferência. Isso dá a um usuário entediado algo para assistir. ” - O sinalizador
--log-file
cria um arquivo de log. Se você acabou de listar algo comoingest.log
após o=
, orsync
anexará informações sobre o que está fazendo no arquivo de log chamadoingest.log
no diretório de trabalho atual. Você também pode usar um nome de caminho completo após o=
para anexar atividade em um arquivo de log dentro de qualquer diretório em seu sistema. Se você precisar especificar um nome de caminho longo para um arquivo de log fora do seu diretório de trabalho atual, poderá arrastar e soltar o arquivo no Terminal do Finder. Arrastar e soltar do Finder irá preencher o nome completo do caminho para o arquivo onde quer que o cursor de texto esteja no Terminal, e até mesmo escapará automaticamente dos espaços dentro do nome do caminho comconforme necessário.
- Por último, as partes
[source]
e[destination]
do comando especificam exatamente sua origem e destino. Sua origem pode ser um arquivo, uma pasta ou o conteúdo de uma pasta. Como com o sinalizador--log-file
, você pode usar a GUI para arrastar um arquivo ou pasta de uma janela do Finder para a janela Terminal para preencher o caminho completo do arquivo, que também escapará automaticamente dos espaços dentro do nome do caminho comconforme necessário.
A presença ou ausência de um /
no final de um caminho de diretório distingue um diretório do conteúdo de um diretório. Usando FolderA
como a fonte irá transferir FolderA
e todo o seu conteúdo para o destino, mas especificando FolderA/
como a fonte irá transferir apenas o conteúdo da FolderA
para o diretório de destino.
Sugestões sobre a melhor forma de usar arquivos de log
Os arquivos de log são ótimas ferramentas de responsabilidade para DITs, gerentes de dados ou qualquer pessoa na cadeia de custódia de imagens valiosas. Se algum clipe em particular desaparecer no processo de pós-produção, você pode voltar e consultar o arquivo de log para verificar se um determinado arquivo foi de fato transferido em um determinado momento.
Um arquivo .log
é apenas um tipo de arquivo de texto que é especialmente designado pelo sistema operacional. No macOS, o aplicativo Console abre arquivos de log por padrão e fornece algumas ferramentas especializadas para navegar por eles, porque eles geralmente podem ficar bastante longos. Não há nada de especial sobre eles, embora – .log
arquivos .log
também possam ser abertos em qualquer editor de texto.
Se o particular .log
arquivo que você especificar no --log-file
bandeira após os =
ainda não existe, rsync
irá criar um novo .log
de arquivo para você e começar a registrar a atividade em que arquivo.
Às vezes, é útil criar um arquivo .log
completamente em branco antes de iniciar qualquer tipo de transferência de rsync
, porque você pode usar a GUI para preencher o nome do caminho longo em vez de digitá-lo manualmente. Por exemplo, se você sabe que deseja registrar a atividade de várias transferências rsync
diferentes em um arquivo de log, pode abrir uma janela do Finder, lado a lado com a janela Terminal, e arrastar um arquivo .log
branco do Finder para o arquivo. Janela de terminal uma vez que o cursor de texto é imediatamente após o =
.
Para criar um arquivo de log em branco, primeiro faça o cd
no diretório em que você deseja que o arquivo de log exista. Em seguida, use o comando touch
para nomear seu novo arquivo de log em branco.
Se você quisesse criar um arquivo de log chamado ingest.log
no seu Desktop, você ingest.log
:
cd ~ / Desktop
toque em ingest.log
Comparando diretórios de origem e destino por soma de verificação
Se você acredita que pode ter alguns arquivos nos diretórios de origem e de destino que são realmente diferentes, mas de alguma forma têm nomes de arquivos e carimbos de data, você pode adicionar o sinalizador -c
para comparar todos os itens nos diretórios de origem e destino por meio da soma de verificação transferir. Entretanto, esteja avisado – isso é extremamente computacionalmente desgastante e pode levar um bom tempo, especialmente para grandes arquivos de mídia, então você só quer usá-lo se for absolutamente necessário, e apenas nos menores diretórios possíveis em questão.
Enfileiramento de várias transferências rsync
Uma das grandes vantagens sobre o uso do rsync
dentro do bash
é que, além de ser capaz de fazer ingesta e transferências únicas, você também pode usar a sintaxe do bash
para enfileirar múltiplos comandos para rodar sucessivamente.
Digamos que você esteja ingerindo a mídia de um dia em um disco rígido e tenha duas placas de câmera que você precisa transferir para um disco rígido. Talvez a velocidade máxima de gravação do disco rígido seja de 100 MB / s, mas os cartões da sua câmera nos leitores de cartão da câmera podem ler a 400 MB / s.
Se você abrir duas janelas diferentes do Terminal e começar a ingerir ambas as placas simultaneamente, seu desempenho sofrerá menos de 50 MB / s para cada placa, porque a unidade estaria efetivamente lutando para tentar gravar dados em dois discos diferentes. diretórios.
Um fluxo de trabalho mais rápido e eficaz seria usar a sintaxe do bash
para colocar em fila dois comandos rsync
diferentes – para ingerir totalmente a primeira placa, aproveitando ao máximo a velocidade total de 100 MB / s do disco rígido e depois ingerir automaticamente a segunda. cartão completamente, continuando a aproveitar a velocidade de gravação total de 100 MB / s do disco rígido.
O manual bash
descreve detalhadamente as diferentes maneiras que isso pode ser feito com diferentes "operadores de controle", mas para nossos propósitos, uma das formas mais fáceis e eficazes de enfileirar os comandos é com um operador de controle específico, o duplo "e" comercial: &&
.
Atribuir comandos junto com &&
permite que cada comando seja executado sequencialmente, enquanto também verifica se cada comando está sendo executado corretamente. Usar &&
significa que, se algum comando em particular na sequência errar, toda a sequência de comandos será interrompida, e nesse ponto você poderá visualizar a mensagem de erro e diagnosticar o que estiver errado. Talvez seu disco rígido esteja cheio ou talvez você tenha digitado algo errado, mas você poderá fazer uma pausa e investigar.
Digamos que temos dois cartões de câmera, A001
e A002
, que queremos ingerir no Hard-Drive
. Nós precisaríamos de dois comandos rsync
:
rsync -aihW --progress --log-file = / Volumes / Hard-Drive / ingest.log / Volumes / Câmera-A001 / Volumes / Disco Rígido
e
rsync -aihW --progress --log-file = / Volumes / Hard-Drive / ingest.log / Volumes / Câmera-A002 / Volumes / Disco Rígido
Para enfileirar um após o outro, em uma linha, combinaríamos os dois comandos com &&
:
rsync -aihW --progress --log-file = / Volumes / Hard-Drive / ingest.log / Volumes / Camera-A001 / Volumes / Disco Rígido && rsync -aihW --progress --log-file = / Volumes / Disco Rígido / ingest.log / Volumes / Câmera-A002 / Volumes / Disco Rígido
O cartão da câmera que a Camera-A001
transferia para o Hard-Drive
, e a atividade seria registrada no ingest.log
, e então o Camera-A002
seria transferido para o Hard-Drive
, e essa atividade também seria registrada no ingest.log
.
Você pode juntar quantos comandos precisar. Se você tivesse outro cartão de câmera montado, Camera-A003
, você poderia executar:
rsync -aihW --progress --log-file = / Volumes / Hard-Drive / ingest.log / Volumes / Camera-A001 / Volumes / Disco Rígido && rsync -aihW --progress --log-file = / Volumes / Disco Rígido / ingest.log / Volumes / Câmera-A002 / Volumes / Disco Rígido && rsync -aihW --progress --log-file = / Volumes / Disco Rígido / ingest.log / Volumes / Câmera-A003 / Volumes /Disco rígido
Você notará que, à medida que você enfileira cada vez mais comandos dessa maneira, achará difícil e irritante olhar para um bloco gigante de texto. Pode ser útil separar cada comando com a tecla de escape – depois de digitar &&
, digite um espaço, então e, em seguida, pressione Enter. A tecla de escape permitirá que você pressione enter sem iniciar a execução da sua lista de comandos. Então, em vez de digitar
command1 && command2 && command3
em uma massa confusa de texto difícil de ler, você pode digitar:
comando1 &&
comando2 &&
comando3
Separar cada comando em sua própria linha mantém tudo em bom estado, limpo e legível.
Transferências rsync surpreendentes para máxima velocidade e eficiência
Normalmente, é uma prática recomendada durante a produção para um DIT ou organizador de dados fazer backup de cartões de câmera em triplicado. Com um pouco de planejamento e deliberação, você pode enfileirar tarefas rsync
em diferentes janelas do Terminal no mesmo computador e manter todas as transferências em execução na velocidade máxima.
Digamos que, para uma filmagem de um dia, temos nove cartões de câmera diferentes para serem ingeridos:
-
A001
-
A002
-
A003
-
A004
-
A005
-
A006
-
A007
-
A008
-
A009
Para simplificar, vamos supor que são todos do mesmo tamanho e que estão todos cheios.
Vamos supor também que você queira colocar todas as nove placas em três discos rígidos diferentes, que são marcas e modelos idênticos, e têm as mesmas capacidades:
-
Hard-Drive-1
-
Hard-Drive-2
-
Hard-Drive-3
Finalmente, vamos supor também que todas as placas de câmera podem ler mais rápido do que os discos rígidos podem gravar – as velocidades de gravação dos discos rígidos são os gargalos.
Qual é a maneira mais rápida e eficiente de executar todos esses cartões, de forma que cada disco rígido receba o conteúdo de cada cartão da câmera na velocidade máxima? A solução é enfileirar as transferências rsync
maneira escalonada .
Com um planejamento cuidadoso, podemos configurar nossos comandos para que:
Primeiro,
-
A001
,A002
eA003
ingerem noHard-Drive-1
; enquanto -
A004
,A005
eA006
ingerem noHard-Drive-2
; e -
A007
,A008
eA009
ingerem noHard-Drive-3
.
Então,
-
A004
,A005
eA006
ingerem noHard-Drive-1
; enquanto -
A007
,A008
eA009
ingerem noHard-Drive-2
; e -
A001
,A002
eA003
ingerem noHard-Drive-3
.
Finalmente,
-
A007
,A008
eA009
ingerem noHard-Drive-1
; enquanto -
A001
,A002
eA003
ingerem noHard-Drive-2
; e -
A004
,A005
eA006
ingerem noHard-Drive 3
.
Como poderíamos conseguir isso? Você montaria todas as placas e discos rígidos e depois abriria três janelas diferentes do Terminal.
Em uma janela do Terminal, você escreveria, para o Hard-Drive-1
:
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-1 / ingest.log / Volumes / A001 / Volumes / Disco Rígido-1 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-1 / ingest.log / Volumes / A002 / Volumes / Disco Rígido-1 &&
rsync -aihW --progress --log-file = / Volumes / Disco Rigido-1 / ingest.log / Volumes / A003 / Volumes / Disco Rígido-1 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-1 / ingest.log / Volumes / A004 / Volumes / Disco Rígido-1 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-1 / ingest.log / Volumes / A005 / Volumes / Disco Rígido-1 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-1 / ingest.log / Volumes / A006 / Volumes / Disco Rígido-1 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-1 / ingest.log / Volumes / A007 / Volumes / Disco Rígido-1 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-1 / ingest.log / Volumes / A008 / Volumes / Disco Rígido-1 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-1 / ingest.log / Volumes / A009 / Volumes / Disco Rígido-1
Na próxima janela do Terminal, você escreveria para o Hard-Drive-2
:
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-2 / ingest.log / Volumes / A004 / Volumes / Disco Rígido-2 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-2 / ingest.log / Volumes / A005 / Volumes / Disco Rígido-2 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-2 / ingest.log / Volumes / A006 / Volumes / Disco Rígido-2 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-2 / ingest.log / Volumes / A007 / Volumes / Hard-Drive-2 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-2 / ingest.log / Volumes / A008 / Volumes / Disco Rígido-2 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-2 / ingest.log / Volumes / A009 / Volumes / Disco Rígido-2 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-2 / ingest.log / Volumes / A001 / Volumes / Disco Rígido-2 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-2 / ingest.log / Volumes / A002 / Volumes / Hard-Drive-2 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-2 / ingest.log / Volumes / A003 / Volumes / Disco Rígido-2
Na terceira janela do Terminal, você escreveria para o Hard-Drive-3
:
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-3 / ingest.log / Volumes / A007 / Volumes / Hard-Drive-3 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-3 / ingest.log / Volumes / A008 / Volumes / Disco Rígido-3 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-3 / ingest.log / Volumes / A009 / Volumes / Disco Rígido-3 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-3 / ingest.log / Volumes / A001 / Volumes / Disco Rígido-3 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-3 / ingest.log / Volumes / A002 / Volumes / Hard-Drive-3 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-3 / ingest.log / Volumes / A003 / Volumes / Disco Rígido-3 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-3 / ingest.log / Volumes / A004 / Volumes / Disco Rígido-3 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-3 / ingest.log / Volumes / A005 / Volumes / Hard-Drive-3 &&
rsync -aihW --progress --log-file = / Volumes / Hard-Drive-3 / ingest.log / Volumes / A006 / Volumes / Disco Rígido-3
Em seguida, você percorre cada janela do Terminal e pressiona Enter para iniciar essas três transferências simultaneamente. Sua CPU estará executando três threads rsync
diferentes, mas lembre-se de que seu gargalo de velocidade não será a potência da CPU – será a velocidade de gravação dos discos rígidos. Com este método, cada disco rígido estará escrevendo em sua velocidade máxima de gravação.
Backups Automatizados com o cron
Embora uma explicação completa esteja fora do escopo deste artigo, eu apenas mencionarei que uma aplicação mais prática do rsync
é usá-lo dentro de outro aplicativo de linha de comando, o cron
. Se você está curioso, pode ir aprendendo a usar o cron
de sua página man
. Essencialmente, o cron
permite executar comandos em intervalos de tempo específicos. Como o rsync
-a
flag monitora quais arquivos em um diretório de destino já existem, programar o rsync
para ser executado regularmente com o sinalizador -a
é uma ótima maneira de fazer backup de arquivos regularmente, sem perda de tempo ou largura de banda em material que já foi salvo acima.
Conclusão
Espero que você ache essa explicação útil. Por favor, deixe um comentário para entrar em contato comigo para quaisquer comentários, perguntas ou críticas respeitosas .