Você pode usar um script, rodando em segundo plano, verificando cada (por exemplo) 20 segundos se o disco estiver montado. Se estiver, ele executa um trabalho rsync
(uma vez) para carregar / atualizar os arquivos no disco externo.
O script abaixo é um exemplo, assim como o trabalho rsync sugerido. use man rsync
para mais informações sobre o rsync. Ele executa o trabalho de backup uma única vez depois de conectado, aguardando a próxima vez que o disco for desconectado / conectado ou quando o script for reiniciado.
Como usar
- Abra o disco ou partição externa, clique com o botão direito do mouse em algum lugar no diretório raiz do disco e escolha "propriedades" para ver onde o disco ou a partição está montada (no campo Localização da janela de propriedades do nautilus).
-
Copie o script abaixo, cole-o em um arquivo vazio e defina a linha:
mounted_volume = "/mountpoint/of/the/disc"
-
Defina os caminhos certos nas linhas:
source_dir = "/path/to/source" target_dir = "/path/to/destination"
Salve-o como copy_ifconnected.py
, execute-o pelo comando (e mantenha-o em execução em segundo plano):
python3 /path/to/copy_ifconnected.py
Se você fizer o que quiser, adicione-o aos seus aplicativos de inicialização.
O script
#!/usr/bin/env python3
import subprocess
import time
mounted_volume = "/mountpoint/of/the/disc"
source_dir = "/path/to/source"
target_dir = "/path/to/destination"
rsync = "rsync -r -t"
curr_status = False
def run_backup():
rsync_job = rsync+" "+source_dir+" "+target_dir
subprocess.Popen(["/bin/bash", "-c", rsync_job])
while True:
connected = subprocess.check_output(["lsblk"]).decode("utf-8")
test1 = mounted_volume in connected; test2 = curr_status==True
if test1 != test2:
if test1 == True:
run_backup()
curr_status = True
else:
curr_status = False
time.sleep(20)