Uma introdução suave ao rsync, uma ferramenta gratuita e poderosa para ingerir mídia

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] 
  1. 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 o rsync 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, como Date Created , Date Modified , etc.
  2. 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, o rsync informará que o item já está "atualizado".
  3. 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.
  4. O sinalizador -W , que também possui o formato longo --whole-file , obriga o rsync 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.
  5. O sinalizador --progress mostra o progresso na janela do Terminal para a transferência atual. A página man realmente tem uma boa descrição para este flag, “Esta opção diz ao rsync para imprimir informações mostrando o progresso da transferência. Isso dá a um usuário entediado algo para assistir. ”
  6. O sinalizador --log-file cria um arquivo de log. Se você acabou de listar algo como ingest.log após o = , o rsync anexará informações sobre o que está fazendo no arquivo de log chamado ingest.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 com conforme necessário.
  7. 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 com conforme 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:

  1. A001
  2. A002
  3. A003
  4. A004
  5. A005
  6. A006
  7. A007
  8. A008
  9. 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:

  1. Hard-Drive-1
  2. Hard-Drive-2
  3. 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,

  1. A001 , A002 e A003 ingerem no Hard-Drive-1 ; enquanto
  2. A004 , A005 e A006 ingerem no Hard-Drive-2 ; e
  3. A007 , A008 e A009 ingerem no Hard-Drive-3 .

Então,

  1. A004 , A005 e A006 ingerem no Hard-Drive-1 ; enquanto
  2. A007 , A008 e A009 ingerem no Hard-Drive-2 ; e
  3. A001 , A002 e A003 ingerem no Hard-Drive-3 .

Finalmente,

  1. A007 , A008 e A009 ingerem no Hard-Drive-1 ; enquanto
  2. A001 , A002 e A003 ingerem no Hard-Drive-2 ; e
  3. A004 , A005 e A006 ingerem no Hard-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 .