У меня есть жесткий диск объемом 1 ТБ. И у меня возникают проблемы при копировании данных на него всякий раз, когда я обновляю его на своем Ubuntu Machine. Кто-нибудь может мне подсказать, как сделать сценарий для Ubuntu таким образом, чтобы при каждом его монтировании копировать вновь записанные данные с моего жесткого диска компьютера на мой внешний жесткий диск?
Вы могли использовать сценарий, работая в фоновом режиме, проверяя каждый (например), 20 секунд, если диск смонтирован. Если это, это работает rsync
задание (однажды) для загружения/обновления файлов на внешнем диске.
сценарий ниже является примером, и предложенное rsync задание - также. используйте man rsync
для получения дополнительной информации о rsync. Это выполняет задание резервного копирования одно единственное время после того, как это соединено, ожидая в следующий раз, когда диск разъединяется/соединяется, или когда сценарий перезапустил.
Копия сценарий ниже, вставьте его в пустой файл и установите строку:
mounted_volume = "/mountpoint/of/the/disc"
Установленный правильные пути в строках:
source_dir = "/path/to/source"
target_dir = "/path/to/destination"
Сохраняют его как copy_ifconnected.py
, выполняют его командой (и поддерживают его в рабочем состоянии в фоновом режиме):
python3 /path/to/copy_ifconnected.py
, Если это делает то, что Вы хотите, добавьте его к своим приложениям запуска.
#!/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)