[gelöst]Suche rsync Option zur Änderung des Dateinamen

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
Xantorix
Beiträge: 177
Registriert: 27.01.2018 13:33:06

[gelöst]Suche rsync Option zur Änderung des Dateinamen

Beitrag von Xantorix » 16.01.2023 21:35:33

Hallo liebe Wissenden,

ich möchte mit einem rsync Befehl txt Dateien aus einem Verzeichnis kopieren und die Dateinamen im Ziel verändern.
Es soll im Ziel zu dem Dateinamen das Datum mit angegeben werden.
Bisher sieht mein Befehl so aus:

Code: Alles auswählen

rsync --remove-source-files -aze ssh pi@192.168.17x.xx:/Quelle/pfad_der_Textdatteien/*.txt /Ziel/pfad_der_Textdatteien
Macht was es soll. Aber natürlich entspricht der Dateiname Ziel jeweils der Quelle.
Ich möchte nun gern das Datum mit im Namen der Zieldatei haben.

Wie kann ich das lösen? Hab dazu bisher nichts gefunden.

Vielen Dank für's Anschauen. Gruß Xante
Zuletzt geändert von Xantorix am 23.01.2023 10:58:31, insgesamt 1-mal geändert.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Suche rsync Option zur Änderung des Dateinamen

Beitrag von JTH » 16.01.2023 21:46:06

Ich bezweifel, dass rsync das kann. Da du anscheinend in einen lokalen Ordner synchronisieren willst, ist es aber kein Problem, noch einen Debianrename-Aufruf anzuschließen.
Manchmal bekannt als Just (another) Terminal Hacker.

Xantorix
Beiträge: 177
Registriert: 27.01.2018 13:33:06

Re: Suche rsync Option zur Änderung des Dateinamen

Beitrag von Xantorix » 16.01.2023 21:54:31

Ja der Befehl wird von meinem Debian NAS ausgeführt und soll txt Dteien aus einem Raspberry PI holen.

Rename muss ich mir anschauen. Es soll ja der Originalname der txt um das Datum ergänzt werden.
Und es soll auch gleich alle txt automatisch umbenennen.

Werd mich mal da durch lesen. Oder halt googlen. Mein Englisch ist ja leider sehr überschaubar.

Danke Gruß Xante

uname
Beiträge: 12075
Registriert: 03.06.2008 09:33:02

Re: Suche rsync Option zur Änderung des Dateinamen

Beitrag von uname » 17.01.2023 07:45:35

Vielleicht kannst du auf dem Zielsystem (lokal) ja für jedes Datum (z. B. Tag) einen eigenen Ordner anlegen und die Dateien dort reinsynchronisieren (ohne Erweiterung des Namen). Wenn du dann noch die rsync-Option "--link-dest" mit Parameter letzter Ordner (vielleicht kann das jemand kurz scripten) verwendest, sollte durch das inkrementelle Sichern die tatsächliche Datenmenge recht gering sein, weit geringer als in deiner Version. Vorteil ist auch, dass du dein Verzeichnis nicht mit unzähligen Dateiversionen vollmüllst.

Vor Jahren hatte ich dazu mal ein Script geschrieben:
https://wiki.ubuntuusers.de/Skripte/Backup_mit_RSYNC

Es gibt unzählig viele Backup-Programme.
Es wäre weit sinnvoller ein fertiges Programm zu verwenden.
Mein eigenes Script würde ich heute auch nicht mehr unbedingt empfehlen.
Es gibt weit bessere, fertige Programme.

Benutzeravatar
MSfree
Beiträge: 10776
Registriert: 25.09.2007 19:59:30

Re: Suche rsync Option zur Änderung des Dateinamen

Beitrag von MSfree » 17.01.2023 08:18:46

uname hat geschrieben: ↑ zum Beitrag ↑
17.01.2023 07:45:35
(vielleicht kann das jemand kurz scripten)
So ein skript steht bereits hier im NoPaste: pastebin/?mode=view&s=40928

Einen Thread gibt es auch dazu:
viewtopic.php?p=1294195

tobo
Beiträge: 1993
Registriert: 10.12.2008 10:51:41

Re: Suche rsync Option zur Änderung des Dateinamen

Beitrag von tobo » 17.01.2023 09:06:34

Als Schema für das Umbenennen (nach dem Kopieren) könnte dienen:

Code: Alles auswählen

for fn in /Ziel/pfad_der_Textdatteien/*.txt; do mv "$fn" "${fn%.txt}_`date +%F`.txt"; done
## oder rekursiv (**) im Zielverzeichnis (unter bash):
shopt -s globstar; for fn in /Ziel/pfad_der_Textdatteien/**/*.txt; do mv "$fn" "${fn%.txt}_`date +%F`.txt"; done

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Suche rsync Option zur Änderung des Dateinamen

Beitrag von JTH » 17.01.2023 10:36:55

tobo hat geschrieben: ↑ zum Beitrag ↑
17.01.2023 09:06:34
Als Schema für das Umbenennen (nach dem Kopieren) könnte dienen:
Um das (bei vielen Dateien) zu beschleunigen und, falls man es gegen Mitternacht ausführt, für alle Dateien garantiert dasselbe Datum zu verwenden, würd ich date lieber nur einmal am Anfang aufrufen:

Code: Alles auswählen

sync_date=$(date +%F); for fn in /Ziel/pfad_der_Textdatteien/*.txt; do mv "$fn" "${fn%.txt}_${sync_date}.txt"; done

## oder rekursiv (**) im Zielverzeichnis (unter bash):
shopt -s globstar; sync_date=$(date +%F); for fn in /Ziel/pfad_der_Textdatteien/**/*.txt; do mv "$fn" "${fn%.txt}_${sync_date}.txt"; done
Manchmal bekannt als Just (another) Terminal Hacker.

tobo
Beiträge: 1993
Registriert: 10.12.2008 10:51:41

Re: Suche rsync Option zur Änderung des Dateinamen

Beitrag von tobo » 17.01.2023 11:08:58

Ja, mir ging es aber nur um's Schema der Umbenennung. Wenn das nicht nur einmal ausgeführt wird, dann muss da wohl eh noch eine Abfrage rein, ob das/ein Datum schon vorhanden ist.

JTH
Moderator
Beiträge: 3023
Registriert: 13.08.2008 17:01:41
Wohnort: Berlin

Re: Suche rsync Option zur Änderung des Dateinamen

Beitrag von JTH » 17.01.2023 11:26:19

tobo hat geschrieben: ↑ zum Beitrag ↑
17.01.2023 11:08:58
Wenn das nicht nur einmal ausgeführt wird, dann muss da wohl eh noch eine Abfrage rein, ob das/ein Datum schon vorhanden ist.
Stimmt, das sollte man auch berücksichtigen. Und nach einem abgebrochenen rsync-Durchlauf sollt man die Umbenennung evtl. auch nicht laufen lassen.

Aber so ganz klar ist mir da der Anwendungsfall aus dem Eingangsbeitrag noch nicht, um das sagen zu können.
Manchmal bekannt als Just (another) Terminal Hacker.

Xantorix
Beiträge: 177
Registriert: 27.01.2018 13:33:06

Re: Suche rsync Option zur Änderung des Dateinamen

Beitrag von Xantorix » 23.01.2023 10:56:55

Hallo, ich habe die Situation nun mit scp gelöst.

Nochmal vielen Dank für die Hilfe.

Da das Ganze mit dem Thema viewtopic.php?t=186006 zusammen hängt habe ich da ein Script für beide Dinge.

Ich gebe zu das mir hier Chat GPT zur Seite stand. Bitte schlagt mich nicht aber ich bin halt Laie auf dem Gebiet.

Ich habe das script nach und nach mit Chat GPT entwickelt und immer wieder getestet bis es so funktioniert wie ich es möchte. "sshpass" wurde durch erstellen eines Schlüsselpaars ersetzt.(kein Passwort mehr im script)

Ich werde es natürlich hier zur Verfügung stellen.

Code: Alles auswählen

#!/bin/bash

# Mit diesem Skript holst du txt Dateien aus dem PI zu Hause oder im Büro

# Autor Xantorix

# farbige Ausgabe von "echo"

function red_msg() {
    echo -e "\\033[31;1m${@}\033[0m"
}

function yellow_msg() {
    echo -e "\\033[33;1m${@}\033[0m"
}

# Definiert die beiden IP-Adressen, die überprüft werden sollen
ip1=192.168.17x.yy
ip2=192.168.17x.yy

# Definiert das lokale Verzeichnis, in das die Dateien kopiert werden
local_dir=/lokales/Verzeichnis

# Definiert das entfernte Verzeichnis, in dem sich die Dateien befinden
remote_dir=/entferntes/Verzeichnis

# Funktion zum Kopieren von Dateien von einer gegebenen IP
copy_files_from_ip(){
    local ip=$1
    files_copied=0
    for file in $(ssh pi@$ip ls $remote_dir/*.txt); do
        filename=$(basename $file)
        target_file="$local_dir/$(date +%Y-%m-%d)_$filename"
        if [ ! -f $target_file ]; then
            scp pi@$ip:$file $target_file
            files_copied=1
            ssh pi@$ip "rm $file"
        fi
    done
    if [ $files_copied -eq 0 ]; then
        red_msg "Die IP $ip ist erreichbar, aber es waren keine Dateien vorhanden"
    else
        yellow_msg "Dateien von IP $ip kopiert"
    fi
}
# Überprüft, ob die erste IP erreichbar ist
if ping -c 1 $ip1 &> /dev/null; then
    copy_files_from_ip $ip1
else
    # Überprüft, ob die zweite IP erreichbar ist
    if ping -c 1 $ip2 &> /dev/null; then
        copy_files_from_ip $ip2
    else
        red_msg "Weder IP $ip1 noch IP $ip2 sind erreichbar"
    fi
fi
Gruß Xante

tobo
Beiträge: 1993
Registriert: 10.12.2008 10:51:41

Re: [gelöst]Suche rsync Option zur Änderung des Dateinamen

Beitrag von tobo » 23.01.2023 11:23:11

Das ist doch mal was anderes und auch definitv eine neue Qualität...

Antworten