Скрипт, необходимый для копирования данных на подключенное устройство хранения

У меня есть жесткий диск объемом 1 ТБ. И у меня возникают проблемы при копировании данных на него всякий раз, когда я обновляю его на своем Ubuntu Machine. Кто-нибудь может мне подсказать, как сделать сценарий для Ubuntu таким образом, чтобы при каждом его монтировании копировать вновь записанные данные с моего жесткого диска компьютера на мой внешний жесткий диск?

0
задан 12 October 2014 в 18:28

1 ответ

Вы могли использовать сценарий, работая в фоновом режиме, проверяя каждый (например), 20 секунд, если диск смонтирован. Если это, это работает rsync задание (однажды) для загружения/обновления файлов на внешнем диске.

сценарий ниже является примером, и предложенное rsync задание - также. используйте man rsync для получения дополнительной информации о rsync. Это выполняет задание резервного копирования одно единственное время после того, как это соединено, ожидая в следующий раз, когда диск разъединяется/соединяется, или когда сценарий перезапустил.

, Как использовать

  • , Открывают внешний диск или раздел, щелкают правой кнопкой где-нибудь в корневом каталоге диска и выбирают "свойства" для наблюдения, где диск или раздел смонтированы (В поле Location окна свойств наутилуса).
  • Копия сценарий ниже, вставьте его в пустой файл и установите строку:

    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)
0
ответ дан 12 October 2014 в 18:28

Другие вопросы по тегам:

Похожие вопросы: