Skript zum Kopieren von Daten auf ein bereitgestelltes Speichergerät erforderlich

Skript zum Kopieren von Daten auf ein bereitgestelltes Speichergerät erforderlich

Ich habe eine 1-TB-Festplatte. Und habe Probleme, Daten darauf zu kopieren, wenn ich sie auf meinem Ubuntu-Rechner aktualisiere. Kann mir jemand sagen, wie ich ein Skript für Ubuntu erstelle, sodass jedes Mal, wenn ich es mounte, die neu gesicherten Daten von meiner PC-Festplatte auf meine externe Festplatte kopiert werden?

Antwort1

Sie können ein Skript verwenden, das im Hintergrund ausgeführt wird und beispielsweise alle 20 Sekunden prüft, ob die Festplatte eingelegt ist. Wenn dies der Fall ist, führt es rsync(einmal) einen Job aus, um die Dateien auf der externen Festplatte hochzuladen/aktualisieren.

Das folgende Skript ist ein Beispiel, ebenso wie der vorgeschlagene rsync-Job. man rsyncWeitere Informationen zu rsync finden Sie unter. Es führt den Sicherungsjob einmal aus, nachdem die Verbindung hergestellt wurde, und wartet auf das nächste Mal, wenn die Festplatte getrennt/verbunden wird oder wenn das Skript neu gestartet wird.

Wie benutzt man

  • Öffnen Sie die externe Festplatte oder Partition, klicken Sie mit der rechten Maustaste irgendwo in das Stammverzeichnis der Festplatte und wählen Sie „Eigenschaften“, um zu sehen, wo die Festplatte oder Partition gemountet ist (im Feld „Speicherort“ des Nautilus-Eigenschaftenfensters).
  • Kopieren Sie das folgende Skript, fügen Sie es in eine leere Datei ein und fügen Sie die Zeile ein:

    mounted_volume = "/mountpoint/of/the/disc"
    
  • Tragen Sie in den Zeilen die richtigen Pfade ein:

    source_dir = "/path/to/source"
    target_dir = "/path/to/destination"
    

Speichern Sie es unter copy_ifconnected.py, führen Sie es mit dem Befehl aus (und lassen Sie es im Hintergrund laufen):

python3 /path/to/copy_ifconnected.py

Wenn es das gewünschte Ergebnis liefert, fügen Sie es zu Ihren Startanwendungen hinzu.

Das Drehbuch

#!/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)

verwandte Informationen