Ubuntu Bin/bash kan het pad niet vinden

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • TheDutchRitual
  • Registratie: Juli 2013
  • Laatst online: 28-08 12:12
Mijn vraag

Disclaimer: Ik ben een totale amateur als het komt op code. Alles heb ik gemaakt met de behulp van chat gpt.

Hi allemaal,

- Ik heb sinds kort een valheim server gestart voor mijn vrienden. Hierbij wil ik graag iedere uur een back up van de server
hebben die iedere uur een copy maakt van de wereld bestanden en deze kopieert naar mijn nas waar die vrij toegang op
heeft. deze command word via cron gedaan

- Daarbij wil ik dat de script het bestands naam veranderd en er een tijd/datum mark er bij zet. Bijvoorbeeld: Vwereld 09:00
20/09/2021.

- Vervolgens bekijkt de script of er een bestand is die ouder is dan 7 dagen en verwijderd die dan.


Oke nu kom ik tegen een probleem aan.
1. De script kan het naam niet veranderen want het pad bestaat niet. Hij kan wel een copy maken naar de nas
2. in het logboek verwijderd hij de entrys die 1 uur oud is. Ik denk dat hij een complete nieuw log bestand maakt ipv de huidige te aantepassen.

Ik heb gekeken op google en wezen stoeien met Chat-gpt wat mij nergens naar toe bracht.

Ik loop op Ubuntu desktop wat op een kleine nuc draait. mochten jullie meer informatie hebben laat het dan aub weten

Hier is mijn code en mijn error codes die ik heb gekregen. Mocht iemand enige advies, ik sta open voor alles:


code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
#!/bin/bash

# Directories and files
SRC_DIR="/home/prd-01/.config/unity3d/IronGate/Valheim/worlds_local"
DEST_DIR="/mnt/valheim/Valheim world save"
LOG_FILE="/mnt/valheim/Valheim world save/Valheim world save log/backup_log.txt"
PROGRAM_NAME="valheim_server.x86_64"  # Correct process name

# Ensure log directory exists
mkdir -p "$(dirname "$LOG_FILE")"

# Clean log file by removing entries older than 7 days
awk -v date="$(date --date='7 days ago' +%d-%m-%Y)" \
    '$0 ~ date {p=1} $0 !~ date {if(p==0) next} {print}' \
    "$LOG_FILE" > "$LOG_FILE.tmp" && mv "$LOG_FILE.tmp" "$LOG_FILE"

# Check if the correct program (Valheim server) is running
if pgrep -f "$PROGRAM_NAME" > /dev/null; then
    echo "$(date +"%d-%m-%Y %H:%M:%S %Z"): Program is running. Starting backup..." >> "$LOG_FILE"

    # Perform the backup for only LD-01.fwl and LD-01.db (handle case sensitivity)
    if ! rsync -av --include='LD-01.fwl' --include='LD-01.db' --exclude='*' "$SRC_DIR/" "$DEST_DIR/"; then
        echo "$(date +"%d-%m-%Y %H:%M:%S %Z"): Backup failed" >> "$LOG_FILE"
        exit 1
    fi

    # Add a 5-second delay before renaming
    sleep 5

    # Rename the files with a timestamp
    TIMESTAMP=$(date +"%H:%M %d/%m/%Y")

    # Rename LD-01.fwl
    if [ -f "$DEST_DIR/LD-01.fwl" ]; then
        mv "$DEST_DIR/LD-01.fwl" "$DEST_DIR/LD-01 ${TIMESTAMP}.fwl"
    fi

    # Rename LD-01.db
    if [ -f "$DEST_DIR/LD-01.db" ]; then
        mv "$DEST_DIR/LD-01.db" "$DEST_DIR/LD-01 ${TIMESTAMP}.db"
    fi

    # Cleanup old backups
    find "$DEST_DIR" -type f -name 'LD-01_*.fwl' -mtime +7 -exec rm {} \;
    find "$DEST_DIR" -type f -name 'LD-01_*.db' -mtime +7 -exec rm {} \;

    echo "$(date +"%d-%m-%Y %H:%M:%S %Z"): Backup completed successfully" >> "$LOG_FILE"
else
    echo "$(date +"%d-%m-%Y %H:%M:%S %Z"): Program is not running. Backup not performed." >> "$LOG_FILE"
fi


foutmelding die ik krijg:

code:
1
2
3
4
5
6
7
rd-01@prd-01:~$ /home/prd-01/backup_valheim.sh
sending incremental file list

sent 96 bytes  received 12 bytes  216.00 bytes/sec
total size is 76,744,756  speedup is 710,599.59
mv: cannot move '/mnt/valheim/Valheim world save/LD-01.fwl' to '/mnt/valheim/Valheim world save/LD-01 08:37 20/09/2024.fwl': No such file or directory
mv: cannot move '/mnt/valheim/Valheim world save/LD-01.db' to '/mnt/valheim/Valheim world save/LD-01 08:37 20/09/2024.db': No such file or directory

Alle reacties


Acties:
  • 0 Henk 'm!

  • bcome
  • Registratie: September 2013
  • Laatst online: 13:21
Wat heb je zelf al ondernomen? Google en chat-gpt gaan je niets vertellen over wat er daadwerkelijk in de map "/mnt/valheim/Valheim world save/" staat. Probeer voordat je het automatiseert eens met de hand, kan je zelf handmatig al de stappen ondernemen die je wil scripten? Daarna kan je je gaan verdiepen in hoe je dat stapsgewijs omzet naar een script. Desnoods loopt je regel voor regel door het script en kijk je wat er vervolgens in de mappen gebeurt.

Acties:
  • 0 Henk 'm!

  • Barreljan
  • Registratie: December 2001
  • Laatst online: 13:10

Barreljan

...Zoom-Zoom...

Ik zou eens kijken in de bestandsnamen en locaties. Je timestamp heeft een forwards slash '/' wat ook de delimiter is voor directories.

code:
1
TIMESTAMP=$(date +"%H:%M %d/%m/%Y")

output: 08:37 20/09/2024

zou moeten zijn, als voorbeeld

code:
1
TIMESTAMP=$(date +"%H:%M %d-%m-%Y")

output: 08:37 20-09-2024


Persoonlijk zou ik zelfs ook geen spaties in filenames doen, maar dat ben ik, en de timestamping andersom: 2009224T0837, dus "%d%m%YT%H%M"

Time Attacker met de Mazda 323F 2.5 V6 J-spec | PV output


Acties:
  • 0 Henk 'm!

  • TheDutchRitual
  • Registratie: Juli 2013
  • Laatst online: 28-08 12:12
Barreljan schreef op vrijdag 20 september 2024 @ 11:01:
Ik zou eens kijken in de bestandsnamen en locaties. Je timestamp heeft een forwards slash '/' wat ook de delimiter is voor directories.

code:
1
TIMESTAMP=$(date +"%H:%M %d/%m/%Y")

output: 08:37 20/09/2024

zou moeten zijn, als voorbeeld

code:
1
TIMESTAMP=$(date +"%H:%M %d-%m-%Y")

output: 08:37 20-09-2024


Persoonlijk zou ik zelfs ook geen spaties in filenames doen, maar dat ben ik, en de timestamping andersom: 2009224T0837, dus "%d%m%YT%H%M"
DAT WAS HEM!

Nu pakt die het gewoon op dank je wel! Ik kon niet me niet bedenken wat er fout was met de code.

Ik heb je advies genomen en het een klein beetje aangepast, want dat werkt beter voor mij. Mocht het toch niet fijn zijn dan heb ik jouw code als een comment er aan toe gevoegd voor als ik het ooit wil aanpassen.
code:
1
 TIMESTAMP=$(date +"%y-%m-%d %H:%M ")



Afbeeldingslocatie: https://tweakers.net/i/WBxkD-whmu4ZOQpUF7Y8kgLZZ8Q=/800x/filters:strip_exif()/f/image/KX5Qz9dngzprwcWLgqeIo6Kx.png?f=fotoalbum_large