Hallo,
ik heb een bash script die een backup maakt van mijn bestanden op mijn locale debian server naar stack. Dit gebeurt in 2 stappen:
1. met behulp van rdiff-backup wordt een lokale backup gemaakt op een andere schijf. Ik gebruik rdiff-backup omdat ik enerzijds file history wil hebben, maar anderzijds de meest recente versie van een file meteen toegankelijk wil hebben.
2. nadien wordt de rdiff-backup via rsync naar stack gekopieerd. de stack locatie is via webdav (davfs) gemount.
(ik doe dit in 2 stappen omdat ik enerzijds graag lokaal een backup heb, en anderzijds ondervond ik instabiliteit als ik rdiff-backup naar de webdav folder liet backupen)
dit script wordt elke nacht uitgevoerd, en ik krijg na het uitvoeren een mail waardoor ik weet of de backup al dan niet goed verlopen is. Enkel gewijzigde files worden door rsync opnieuw upgeload.
Het script werkt volledig correct, tot op het moment dat ik mijn server herstart: rsync zal dan telkens de volledige backup opnieuw uploaden, ondanks dat de files niet gewijzigd zijn.
het rdiff-backup commando ziet er als volgt uit:
het rsync commando als volgt:
Iemand een idee wat hiervan de oorzaak kan zijn?
Dit is het volledige script:
ik heb een bash script die een backup maakt van mijn bestanden op mijn locale debian server naar stack. Dit gebeurt in 2 stappen:
1. met behulp van rdiff-backup wordt een lokale backup gemaakt op een andere schijf. Ik gebruik rdiff-backup omdat ik enerzijds file history wil hebben, maar anderzijds de meest recente versie van een file meteen toegankelijk wil hebben.
2. nadien wordt de rdiff-backup via rsync naar stack gekopieerd. de stack locatie is via webdav (davfs) gemount.
(ik doe dit in 2 stappen omdat ik enerzijds graag lokaal een backup heb, en anderzijds ondervond ik instabiliteit als ik rdiff-backup naar de webdav folder liet backupen)
dit script wordt elke nacht uitgevoerd, en ik krijg na het uitvoeren een mail waardoor ik weet of de backup al dan niet goed verlopen is. Enkel gewijzigde files worden door rsync opnieuw upgeload.
Het script werkt volledig correct, tot op het moment dat ik mijn server herstart: rsync zal dan telkens de volledige backup opnieuw uploaden, ondanks dat de files niet gewijzigd zijn.
het rdiff-backup commando ziet er als volgt uit:
code:
1
| rdiff-backup --print-statistics --exclude-symbolic-links "$SOURCE_DIR" "$TARGET_DIR" > "$SINGLE_LOG_FILE" 2> "$SINGLE_ERROR_FILE" |
het rsync commando als volgt:
code:
1
| rsync -av --delete "$SOURCE_DIR" "$TARGET_DIR" > "$SINGLE_LOG_FILE" 2> "$SINGLE_ERROR_FILE" |
Iemand een idee wat hiervan de oorzaak kan zijn?
Dit is het volledige script:
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
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
| #!/bin/bash # email address to send result to MAIL_TO=my@address.com # root directory of logs ROOT_BACKUPLOGDIR=/location_to_log_directory #log directory per month DATE_DIR=$(date '+%Y-%m') LOG_DIR=$ROOT_BACKUPLOGDIR/$DATE_DIR mkdir -p "$LOG_DIR" # timestamp for the filename DATE=$(date '+%Y-%m-%d_%Hu%M') #log files containing all logging of all actions COMPLETE_LOG_FILE=$LOG_DIR/$DATE.log COMPLETE_ERROR_FILE=$LOG_DIR/$DATE.error # backup files to local backup directory BACKUP_DIRS=("files" "fotos" "music") for BACKUP_DIR in ${BACKUP_DIRS[*]}; do SOURCE_DIR=/location_to_local_working_files_dir/$BACKUP_DIR/ TARGET_DIR=/location_to_local_backup_dir/$BACKUP_DIR/ SINGLE_LOG_FILE=$LOG_DIR/$DATE.$BACKUP_DIR.log SINGLE_ERROR_FILE=$LOG_DIR/$DATE.$BACKUP_DIR.error echo "rdiff-backup from $SOURCE_DIR to $TARGET_DIR" # perform the backup rdiff-backup --print-statistics --exclude-symbolic-links "$SOURCE_DIR" "$TARGET_DIR" > "$SINGLE_LOG_FILE" 2> "$SINGLE_ERROR_FILE" # copy log to complete log { echo "" echo "----------------------------------------------------------" echo "rdiff-backup from $SOURCE_DIR to $TARGET_DIR" echo "----------------------------------------------------------" cat "$SINGLE_LOG_FILE" echo "" } >> "$COMPLETE_LOG_FILE" # add errors to complete error log ERROR_FILE_SIZE=$(stat -c%s "$SINGLE_ERROR_FILE") if [ "$ERROR_FILE_SIZE" != 0 ] then { echo "" echo "----------------------------------------------------------" echo "rdiff-backup from $SOURCE_DIR to $TARGET_DIR" echo "----------------------------------------------------------" cat "$SINGLE_ERROR_FILE" echo "" } >> "$COMPLETE_ERROR_FILE" fi rm "$SINGLE_LOG_FILE" rm "$SINGLE_ERROR_FILE" done #upload to stack UPLOAD_DIRS=("files" "fotos") for BACKUP_DIR in ${UPLOAD_DIRS[*]}; do SOURCE_DIR=/location_to_local_backup_dir/$BACKUP_DIR/ TARGET_DIR=/location_to_webdav_backup_dir/$BACKUP_DIR/ SINGLE_LOG_FILE=$LOG_DIR/$DATE.$BACKUP_DIR.upload.log SINGLE_ERROR_FILE=$LOG_DIR/$DATE.$BACKUP_DIR.upload.error echo "upload (rsync) from $SOURCE_DIR to $TARGET_DIR" # perform the upload rsync -av --delete "$SOURCE_DIR" "$TARGET_DIR" > "$SINGLE_LOG_FILE" 2> "$SINGLE_ERROR_FILE" # copy log to complete log { echo "" echo "----------------------------------------------------------" echo "upload (rsync) from $SOURCE_DIR to $TARGET_DIR" echo "----------------------------------------------------------" cat "$SINGLE_LOG_FILE" echo "" } >> "$COMPLETE_LOG_FILE" # add errors to complete error log ERROR_FILE_SIZE=$(stat -c%s "$SINGLE_ERROR_FILE") if [ "$ERROR_FILE_SIZE" != 0 ] then { echo "" echo "----------------------------------------------------------" echo "upload (rsync) from $SOURCE_DIR to $TARGET_DIR" echo "----------------------------------------------------------" cat "$SINGLE_ERROR_FILE" echo "" } >> "$COMPLETE_ERROR_FILE" fi rm "$SINGLE_LOG_FILE" rm "$SINGLE_ERROR_FILE" done if [ -e "$COMPLETE_ERROR_FILE" ]; then mail -s "[ERROR] Backup - $DATE" -A "$COMPLETE_LOG_FILE" -A "$COMPLETE_ERROR_FILE" $MAIL_TO < "$COMPLETE_ERROR_FILE" else mail -s "[SUCCESS] Backup - $DATE" -A "$COMPLETE_LOG_FILE" $MAIL_TO < "$COMPLETE_LOG_FILE" fi |