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).