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 |