마운트된 저장 장치에 데이터를 복사하는 데 필요한 스크립트

마운트된 저장 장치에 데이터를 복사하는 데 필요한 스크립트

1TB HDD가 있습니다. 그리고 Ubuntu 컴퓨터에서 업데이트할 때마다 데이터를 복사하는 데 문제가 있습니다. Ubuntu를 마운트할 때마다 PC HDD에서 외부 HDD로 새로 덤프된 데이터를 복사하도록 Ubuntu용 스크립트를 만드는 방법을 제안해 줄 수 있는 사람이 있습니까?

답변1

백그라운드에서 실행되는 스크립트를 사용하여 (예를 들어) 매 20초마다 디스크가 마운트되었는지 확인할 수 있습니다. 그렇다면 rsync외부 디스크의 파일을 업로드/업데이트하는 작업을 한 번 실행합니다.

아래 스크립트는 예시이며 제안된 rsync 작업도 마찬가지입니다. man rsyncrsync에 대한 자세한 내용을 보려면 사용하세요 . 연결된 후 백업 작업을 한 번 실행하고 다음에 디스크 연결이 끊어지거나 연결되거나 스크립트가 다시 시작될 때까지 기다립니다.

사용하는 방법

  • 외부 디스크나 파티션을 열고 디스크의 루트 디렉터리를 마우스 오른쪽 버튼으로 클릭한 다음 "속성"을 선택하여 디스크나 파티션이 마운트된 위치를 확인합니다(노틸러스 속성 창의 위치 필드에서).
  • 아래 스크립트를 복사하여 빈 파일에 붙여넣고 다음 줄을 설정합니다.

    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)

관련 정보