將資料複製到已安裝的儲存裝置所需的腳本

將資料複製到已安裝的儲存裝置所需的腳本

我有一個 1 TB 硬碟。每當我在Ubuntu 機器上更新它時,將資料複製到其中時都會遇到問題。 PC HDD 複製到我的外部HDD 嗎?

答案1

您可以使用在背景執行的腳本,每(例如)20 秒檢查一次光碟是否已安裝。如果是,它會執行一個rsync作業(一次)來上傳/更新外部磁碟上的檔案。

下面的腳本是一個範例,建議的 rsync 作業也是如此。用於man rsync獲取有關 rsync 的更多資訊。它在連接後運行一次備份作業,等待下一次光碟斷開/連接或腳本重新啟動時。

如何使用

  • 開啟外部光碟或分割區,右鍵單擊光碟根目錄中的某處,然後選擇「屬性」以查看光碟或分割區的安裝位置(在 nautilus 屬性視窗的「位置」欄位中)。
  • 複製下面的腳本,將其貼上到空文件中並設定以下行:

    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)

相關內容