我有一個 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)