Como migrar conteúdo do OneDrive para outro OneDrive via rclone no Windows
Obs: O rclone permite migrar diversos tipos de serviços na nuvem como Webdav (Nextcloud), Onedrive, Dropbox, Google Drive, Amazon S3 e vice versa. Nesse guide vamos abordar somente a migração de Onedrive para Onedrive. Para saber mais sobre quais serviços ele migra, acesse a documentação da solução: https://rclone.org.
Este guia serve para criar os remotes de conexão do rclone e copiar o conteúdo do OneDrive de uma conta para outra conta, sejam contas do mesmo domínio ou de domínios diferentes, do Microsoft 365, usando o Windows.
Um ponto importante a se observar, é preciso ter usuário administrador para acesso ao tenant que vai enviar e o tenant que vai receber a cópia, caso sejam tenants diferentes.
1 - O primeiro passo é criar o aplicativo de conexão das contas no AzureAD, neste caso vou copiar conteúdo do OneDrive entre contas do mesmo domínio, mas o processo é o mesmo para contas de domínios diferentes. Acesse a url do AzureAD portal.azure.com, a esquerda clique em Registro de aplicativo e depois em Novo registro.
2.1 - Defina um nome para o aplicativo, deixe marcado a opção "Único locatário", já que é o mesmo tenant, caso sejam tenants diferentes marque a segunda opção, "Multilocatário", e depois em Redirecionamento selecione a opção WEB e coloque esta url no campo: http://localhost:53682/. Depois disso clique em Registrar.
2.2 - Depois do aplicativo criado uma tela com informações será apresentada, copie o ID do aplicativo (cliente) e o ID do diretório (locatário), serão usadas depois para montar o remote.
2.3 - Depois de criar o app vamos criar um segredo (chave) para ele, a esquera no mesmo painel clique em Certificados e segredos, depois Novo segrede de cliente, depois a direita defina um nome qualquer para o segredo e um tempo de expiração, por padrão podemos deixar 24 meses. Depois de criar o segredo copie o Valor, pois será utilizado depois para montar o remote. Obs: copie o valor nesta etapa, depois de atualizar a página o valor não fica mais disponível para cópia, um novo segredo teria que ser criado.
2.4 - Depois de criar o segredo clique em Permissões de API, a esquerda, depois selecione o Microsoft Graph, vamos usar as APIs de consulta dele, e por fim pesquisa pelas APIs a seguir e marque todas essas:
Files.Read
Files.Read.All
Files.ReadWrite
Files.ReadWrite.All
offline_access
User.Read
Sites.Read.All
2.5 - Depois de marcar todas clique em Atualizar permissões, e depois clique em Conceder consentimento do administrador para 'Seu tenant'.
3 - Baixar e colocar o rclone dentro de alguma pasta no seu Windows, podemos usar o notebook próprio ou uma VM para o processo. Download do rclone - https://rclone.org/downloads/
4 - Por padrão ao executar o rclone pela primeira vez um arquivo chamado rclone.conf é criado no seguinte caminho "C:\Usuários\Administrador\AppData\Roaming\rclone", dentro deste arquivo ficam salvas as configurações dos remotes que o rclone usa para fazer a conexão e posteriormente a cópia. Vou disponibilizar aqui um arquivo .conf padrão que já está pré-pronto para migração do OneDrive, download aqui.
[remote-name]
type = onedrive
client_id =
client_secret =
token =
auth_url = https://login.microsoftonline.com/tenant_id/oauth2/v2.0/authorize
token_url = https://login.microsoftonline.com/tenant_id/oauth2/v2.0/token
drive_type = business
drive_id =
5 - Abrir um cmd e acessar a pasta do rclone, no meu caso está no caminho "C:\Rclone", digite rclone config, a seguinte tela será apresentada, vamos criar um novo para entender o processo completo, digite n e de enter e defina um nome para o remote, vou colocar onedrive-origem.
5.1 - Depois selecione o número do drive que vamos usar ou digite o nome, no nosso caso onedrive ou 31. Nas próximas 3 opções depois de selecionar o storage basta dar enter e deixar como padrão.
5.2 - Depois de selecionar a região o rclone vai te perguntar sobre configuração avançada, coloque n e de enter, depois ele vai te pedir para fazer a autenticação com a conta de origem da migração, que é a conta que vai ficar atrelada a este remote, coloque y e de enter nas duas vezes, você será redirecionado para o navegador, aceite as permissões para confirmar.
5.3 - Se a seguinte mensagem aparecer é porque deu certo, volte ao rclone no cmd
5.4 - Agora selecione o drive da Microsoft que deseja usar, neste caso vamos dar enter e manter o padrão OneDrive, na próxima opção o rclone mostra o drive que encontrou nesta conta e opção, e o caminho do drive, que normalmente é "https://seudominio-my.sharepoint.com/personal/onedrive_seudominio_com_br/Documents", apenas confirme o caminho e de enter que a chave JSON será gerada. No final de enter novamente para confirmar que o remote está correto e ele será criado.
6 - Agora vamos acessar o arquivo .conf para colocar as demais configurações, client_id, secret_id e tenant_id, vá no caminho aonde o arquivo fica salvo, "C:\Usuários\Administrador\AppData\Roaming\rclone", abra ele com algum editor de texto para vê-lo da seguinte forma:
6.1 - Vamos colocar o client_id, secret_id e as duas urls de login e autenticação no tenant com o tenant_id, são esses:
client_id =
client_secret =
auth_url = https://login.microsoftonline.com/tenant_id/oauth2/v2.0/authorize
token_url = https://login.microsoftonline.com/tenant_id/oauth2/v2.0/token
Copie eles, edite com as informações corretas geradas na criação do app no AzureAD e cole no arquivo .conf, depois salve, deve ficar desta forma:
7 - Feito isso o remote está pronto para ser usado, podemos voltar ao rclone no cmd e começar a executar comandos, como o rclone ls remote: para listar os arquivos dentro do OneDrive, ou rclone lsd remote: para listar os diretórios, o rclone about remote: também é últil para saber qual o espaço total do OneDrive, espaço livre e utilizado. Aqui tem uma documentação completa sobre os comandos e flags do rclone - https://rclone.org/commands/ e https://rclone.org/flags/
8 - Agora que já criamos o primeiro remote, que vai ser o da origem, podemos criar o segundo a partir do arquivo .conf que já está pronto, basta abrir o arquivo com um editor de texto, como no nosso caso os remotes da origem e do destino vão ser do mesmo tenant vamos editar apenas o token e o drive_id, o arquivo vai ficar desta forma:
8.1 - Agora voltamos ao rclone e executamos rclone config, selecione o remote de destino, vá dando enter nas configurações, são todas padrão e no final, na parte de logar na web coloque y e se lembre de deslogar qualquer conta que possa estar logada no 365, para apenas autenticar com a conta de destino e gerar o token dela, desta forma:
8.2 - Depois continue dando enter nas próximas configurações, tudo fica no padrão e o rclone preenche o token de autenticação e o drive_id desta segunda conta
9 - Agora para finalizar vamos simular uma cópia de dados, de um OneDrive para o outro, executei o comando rclone copy onedrive-origem: onedrive-destino: -v -P (o -v exibi o verbose do que foi copiado na tela e o -P exibi o progresso de cópia de cada item), a saída será essa:
O mesmo processo pode ser feito para copiar dados do remote -destino de volta para o -origem, basta executar o comando invertendo a posição dos dois, a sintaxe sempre é: rclone [opção] [origem:] [destino:] [flags]
A cópia pode ser mais personalizada, existem uma infinidade de parâmetros que podem ser usados junto com o rclone - https://rclone.org/flags/ e https://rclone.org/commands/
Em alguns testes realizados entre ambiente Windows e Linux percebemos que o rclone usado no Linux tem performance de recurso da máquina e rede bem superior ao Windows, o .conf pode ser o mesmo nos dois ambientes, basta instalar o rclone no Linux, copiar o .conf e executar.
Fim!