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
|
# Fix some backup and restore operations.
diff -Naur otrs-5.0.15.orig/scripts/backup.pl otrs-5.0.15/scripts/backup.pl
--- otrs-5.0.15.orig/scripts/backup.pl 2016-12-08 01:13:23.000000000 +0100
+++ otrs-5.0.15/scripts/backup.pl 2016-12-19 16:25:22.103948443 +0100
@@ -152,7 +152,7 @@
# backup Kernel/Config.pm
print "Backup $Directory/Config.tar.gz ... ";
-if ( !system("tar -czf $Directory/Config.tar.gz Kernel/Config*") ) {
+if ( !system("tar -czhf $Directory/Config.tar.gz Kernel/Config*") ) {
print "done\n";
}
else {
@@ -169,7 +169,7 @@
if ($FullBackup) {
print "Backup $Directory/Application.tar.gz ... ";
my $Excludes = "--exclude=var/tmp --exclude=js-cache --exclude=css-cache --exclude=.git";
- if ( !system("tar $Excludes -czf $Directory/Application.tar.gz .") ) {
+ if ( !system("tar $Excludes -czhf $Directory/Application.tar.gz .") ) {
print "done\n";
}
else {
@@ -182,7 +182,7 @@
# backup vardir
else {
print "Backup $Directory/VarDir.tar.gz ... ";
- if ( !system("tar -czf $Directory/VarDir.tar.gz var/") ) {
+ if ( !system("tar -czhf $Directory/VarDir.tar.gz var/") ) {
print "done\n";
}
else {
@@ -195,7 +195,7 @@
# backup datadir
if ( $ArticleDir !~ m/\A\Q$Home\E/ ) {
print "Backup $Directory/DataDir.tar.gz ... ";
- if ( !system("tar -czf $Directory/DataDir.tar.gz $ArticleDir") ) {
+ if ( !system("tar -czhf $Directory/DataDir.tar.gz $ArticleDir") ) {
print "done\n";
}
else {
diff -Naur otrs-5.0.15.orig/scripts/restore.pl otrs-5.0.15/scripts/restore.pl
--- otrs-5.0.15.orig/scripts/restore.pl 2016-10-27 01:48:10.000000000 +0200
+++ otrs-5.0.15/scripts/restore.pl 2016-12-19 16:25:22.103948443 +0100
@@ -167,6 +167,20 @@
system("tar -xzf $Opts{b}/DataDir.tar.gz");
}
+# restore symlinked structure
+if (-e "$Opts{'b'}/SymLinks.tar.gz") {
+ print "Restore $Opts{'b'}/SymLinks.tar.gz ...\n";
+ mkdir $Opts{'d'}."/tmpdir";
+ # deflate Symlinks into temporary directory
+ system("cd $Opts{'d'}.\"/tmpdir/\" && tar -xzf $Opts{'b'}/SymLinks.tar.gz");
+ # check if the destination files exist or abort
+ system("cd $Opts{'d'} && ".'find tmpdir/ -type l -print0 | xargs -0 perl -e \'foreach(@ARGV) { die "Destination: ".readlink($_)." exists! Abort." if (not -x readlink) }\'');
+ # otherwise restore them to the location from the symlink
+ system("cd $Opts{'d'} && ".'find tmpdir/ -type l -print0 | xargs -0 perl -e \'foreach (@ARGV) { $link = readlink; $_ =~ s|[^/]*/||; system("mv $_ $link"); symlink $link, $_ }\'');
+ # delete temporary directory
+ system("cd $Opts{'d'} && rm -rf tmpdir");
+}
+
# import database
if ( $DB =~ m/mysql/i ) {
print "create $DB\n";
|