Pesquisa de site

Rclone - Sincronize diretórios de arquivos de diferentes armazenamentos em nuvem


Rclone é um programa de linha de comando escrito em linguagem Go, usado para sincronizar arquivos e diretórios de diferentes provedores de armazenamento em nuvem, como: Amazon Drive, Amazon S3, Backblaze B2, Box, Ceph, DigitalOcean Spaces, Dropbox, FTP, Google Cloud Storage, Google Drive, etc.

Como você pode ver, ele suporta múltiplas plataformas, o que o torna uma ferramenta útil para sincronizar seus dados entre servidores ou para um armazenamento privado.

Rclone vem com os seguintes recursos

  • O hash MD5/SHA1 verifica sempre para garantir a integridade do arquivo.
  • Os carimbos de data e hora são preservados nos arquivos.
  • Sincronizações parciais suportadas em arquivos inteiros.
  • Modo de cópia para arquivos novos ou alterados.
  • Sincronização unilateral para tornar um diretório idêntico.
  • Modo de verificação – verificação de igualdade de hash.
  • Pode sincronizar de e para a rede, por exemplo, duas contas de nuvem diferentes.
  • (Criptografia) back-end.
  • (Cache) back-end.
  • (União) back-end.
  • Montagem FUSE opcional (montagem rclone).

Como instalar o rclone em sistemas Linux

A instalação do rclone pode ser concluída de duas maneiras diferentes. O mais fácil é usar o script de instalação, emitindo o seguinte comando.

curl https://rclone.org/install.sh | sudo bash

O que este script faz é verificar o tipo de sistema operacional em que é executado e baixar o arquivo relacionado a esse sistema operacional. Em seguida, ele extrai o arquivo e copia o binário rclone para /usr/bin/rclone e concede permissões 755 no arquivo.

No final, quando a instalação for concluída, você deverá ver a seguinte linha:

Rclone v1.44 has successfully installed.
Now run “rclone config” for setup, Check https://rclone.org/docs/ for  more details.

A segunda maneira de instalar o rclone é emitindo os seguintes comandos.

curl -O https://downloads.rclone.org/rclone-current-linux-amd64.zip
unzip rclone-current-linux-amd64.zip
cd rclone-*-linux-amd64

Agora copie o arquivo binário e conceda a ele permissões executáveis.

cp rclone /usr/bin/
chown root:root /usr/bin/rclone
chmod 755 /usr/bin/rclone

Instale a página de manual rclone.

mkdir -p /usr/local/share/man/man1
cp rclone.1 /usr/local/share/man/man1/
mandb 

Como configurar o rclone em sistemas Linux

Em seguida, o que você precisa fazer é executar o rclone config para criar seu arquivo de configuração. Ele será usado para autenticação para uso futuro do rclone. Para executar a configuração, execute o seguinte comando.

rclone config

Você verá o seguinte prompt:

2018/11/13 11:39:58 NOTICE: Config file “/home/user/.config/rclone/rclone.conf” not found - using defaults
No remotes found - make a new one
n) New remote
s) Set configuration password
q) Quit config
n/s/q>

As opções são as seguintes:

  • n) – Criar nova conexão remota
  • s) – defina a proteção por senha para sua configuração
  • q) – sai da configuração

Para efeitos deste tutorial, vamos pressionar "n" e criar uma nova conexão. Você será solicitado a dar um nome à nova conexão. Depois disso, você será solicitado a selecionar o tipo de armazenamento a ser configurado:

Nomeei por conexão “Google ” e selecionei “Google Drive ”, que está sob o número 12. O resto das perguntas você pode responder simplesmente deixando a resposta padrão, que é um “ ” vazio.

Quando solicitado, você pode selecionar “autoconfig ”, que gerará todas as informações necessárias para se conectar ao seu Google Drive e concederá permissões ao rclone para use dados do Google Drive.

O processo é mais ou menos assim:

Google Application Client Secret - leave blank normally.
client_secret>
Scope that rclone should use when requesting access from drive.
Choose a number from below, or type in your own value
 1 / Full access all files, excluding Application Data Folder.
   \ "drive"
 2 / Read-only access to file metadata and file contents.
   \ "drive.readonly"
   / Access to files created by rclone only.
 3 | These are visible in the drive website.
   | File authorization is revoked when the user deauthorizes the app.
   \ "drive.file"
   / Allows read and write access to the Application Data folder.
 4 | This is not visible in the drive website.
   \ "drive.appfolder"
   / Allows read-only access to file metadata but
 5 | does not allow any access to read or download file content.
   \ "drive.metadata.readonly"
scope> 1
ID of the root folder - leave blank normally.  Fill in to access "Computers" folders. (see docs).
root_folder_id> 
Service Account Credentials JSON file path - needed only if you want use SA instead of interactive login.
service_account_file>
Remote config
Use auto config?
 * Say Y if not sure
 * Say N if you are working on a remote or headless machine or Y didn't work
y) Yes
n) No
y/n> y
If your browser doesn't open automatically go to the following link: http://127.0.0.1:53682/auth
Log in and authorize rclone for access
Waiting for code...
Got code
Configure this as a team drive?
y) Yes
n) No
y/n> n
--------------------
[remote]
client_id = 
client_secret = 
scope = drive
root_folder_id = 
service_account_file =
token = {"access_token":"XXX","token_type":"Bearer","refresh_token":"XXX","expiry":"2018-11-13T11:57:58.955387075Z"}
--------------------
y) Yes this is OK
e) Edit this remote
d) Delete this remote
y/e/d> y

Como usar rclone em sistemas Linux

Rclone tem uma longa lista de opções e comandos disponíveis para serem usados. Tentaremos cobrir alguns dos mais importantes:

Listar diretório remoto

rclone lsd <remote-dir-name>:

Copiar dados com rclone

rclone copy source:sourcepath dest:destpath

Observe que se rclone encontrar duplicatas, elas serão ignoradas:

Sincronize dados com rclone

Se você deseja sincronizar alguns dados entre diretórios, você deve usar rclone com o comando sync.

O comando deve ficar assim:

rclone sync source:path dest:path [flags]

Neste caso a origem é sincronizada com o destino, alterando apenas o destino! Este método ignora arquivos inalterados. Como o comando pode causar perda de dados, você pode usá-lo com “–dry-run ” para ver exatamente o que será copiado e excluído.

Mover dados com rclone

Para mover dados, você pode usar rclone com o comando move. O comando deve ficar assim:

rclone move source:path dest:path [flags]

O conteúdo da origem será movido (excluído) e colocado no destino selecionado.

Outros comandos rclone úteis

Para criar um diretório no destino.

rclone mkdir remote:path

Para remover um diretório.

rclone rmdir remote:path

Verifique se os arquivos na origem e no destino correspondem:

rclone check source:path dest:path

Deletar arquivos:

rclone delete remote:path

Cada um dos comandos rclone pode ser usado com sinalizadores diferentes e inclui seu próprio menu de ajuda. Por exemplo, você pode fazer uma exclusão seletiva usando a opção de exclusão. Digamos que você queira excluir arquivos maiores que 100M, o comando ficaria assim.

rclone --min-size 100M delete remote:path

É altamente recomendável revisar o manual e a ajuda de cada comando para aproveitar ao máximo o rclone. A documentação completa do rclone está disponível em: https://rclone.org/

Conclusão

rclone é um poderoso utilitário de linha de comando para ajudá-lo a gerenciar dados entre diferentes provedores de armazenamento em nuvem. Embora neste artigo tenhamos apenas arranhado a superfície dos recursos do rclone, há muito mais a ser alcançado com ele, especialmente quando usado em combinação com o serviço cron (por exemplo).