include ../settings.make
-BINSCRIPTS= checkallused loaded driver takedown whatsthis labeltape \
- snap-drop
-SHARESCRIPTS= bringup full increm
+BINSCRIPTS= checkallused loaded driver takedown whatsthis labeltape
+SHARESCRIPTS= bringup full increm snap-drop
SHAREFILES= backuplib.pl
SNAPKINDS= lvm remount
$(INSTALL_SCRIPT) $$s $(bindir)/backup-$$s; done
$(INSTALL_SHARE) $(SHAREFILES) $(sharedir)
$(INSTALL_SCRIPT) $(SHARESCRIPTS) $(sharedir)
- $(INSTALL_SCRIPT) $(SNAPKINDS) $(confdir)/snap
+ set -e; for s in $(SNAPKINDS); do \
+ d=$(confdir)/snap/$$s; \
+ test ! -f $$d || d=$$d.dist; \
+ $(INSTALL_SCRIPT) $$s $$d; done
install-docs:
$(INSTALL_DIRECTORY) $(txtdocdir)
$dopts= $3;
$prefix= '<local>';
$pcstr= '';
- stat $atf or die "stat $atf: $!";
- -d _ or die "not a dir: $atf";
$rstr= '';
} elsif ($tf =~ m#^(/\S*)\s+(\w+)([,=0-9a-z]*)\s+(\w+)$#) {
# Line of form '[/device:]/file/system dumptype[,options] prefix'
$dev = $atf =~ s,^(.*)\:,, ? $1 : '';
+ if (!length $pcstr) {
+ stat $atf or die "stat $atf: $!";
+ -d _ or die "not a dir: $atf";
+ }
+
undef %dopt;
foreach $dopt (split /\,/,$dopts) {
if (grep { $dopt eq $_ } qw(gz)) {
$dopt{$dopt}= 'y';
- if (grep { $dopt eq $_ } qw(snap)) {
+ } elsif (grep { $dopt eq $_ } qw(snap)) {
$dopt{$dopt}= $dopt;
} elsif ($dopt =~ m/\=/ && grep { $` eq $_ } qw(gz snap)) {
$dopt{$`}= $';
$$gzo= '';
}
}
+
+ if (length $dopt{'snap'}) {
+ length $dev or die "$pcstr:$atf no device but needed for snap";
+ }
}
sub execute ($) {
}
sub prepfsys () {
+ $dev_print= $dev;
+ $atf_print= $atf;
+
if (length $dopt{'snap'}) {
+
system('snap-drop'); $? and die $?;
$snapscripts= '/etc/chiark-backup/snap';
- $snapbase= "$rstr $snapscripts/$dopt{'snap'} /var/lib/chiark-backup";
+ $snapbase= "$rstr $snapscripts/$dopt{'snap'}";
+ $snapargs= "/var/lib/chiark-backup";
- $snapsnap= "$snapbase snap $dev $atf";
- $snapdrop= "$snapbase drop";
+ $snapsnap= "$snapbase snap $snapargs $dev $atf";
+ $snapdrop= "$snapbase drop $snapargs";
open SD, ">snap-drop.new" or die $!;
print SD $snapdrop,"\n" or die $!;
print "Doing $doing ...\n" or die $!;
unlink 'p';
-system 'mknod p p'; $? and die $?;
+system 'mknod -m600 p p'; $? and die $?;
setstatus "FAILED during dump";
$ddcmd .= " conv=sync";
}
- nexttapefile("full $prefix:$atf");
+ nexttapefile("full $prefix:$atf_print");
# We can back up via dump or cpio or zafio
$dumpin= '</dev/null';
if ($tm eq 'dump') {
- $dumpcmd= "dump 0bfu $softblocksizekb - $atf";
+ $dumplabel= $pcstr.$atf_print.'$';
+ $dumpcmd= "dump 0Lbfu $dumplabel $softblocksizekb - $atf";
} elsif ($tm eq 'cpio') {
startprocess '</dev/null','>&FINDOW',$rstr."find $atf -xdev -noleaf -print0";
$dumpcmd= "cpio -Hustar -o0C$softblocksizebytes";
execute("$rstr touch $fsidfile+new");
$dumpcmd= "tar Ccfl $atf - .";
} else {
- die "unknown method $tm for $prefix:$atf\n";
+ die "unknown method $tm for $prefix:$atf_print\n";
}
# This is a funky way of doing a pipeline which pays attention
# to the exit status of all the commands in the pipeline.
}
if ($tm eq 'dump') {
- $dumpcmd= "dump 1bfu $softblocksizekb - $atf";
+ $dumplabel= $pcstr.$atf_print.'$';
+ $dumpcmd= "dump 1Lbfu $dumplabel $softblocksizekb - $atf";
} elsif ($tm eq 'gtar') {
$dumpcmd= "tar NCcfl $fsidfile $atf - .";
} else {
- pboth("Not dumping $atf ($prefix) - not supported.\n");
+ pboth("Not dumping $atf_print ($prefix) - not supported.\n");
next;
}
- nexttapefile("inc $prefix:$atf");
+ nexttapefile("inc $prefix:$atf_print");
# Same trick as full uses to do a pipeline whilst keeping track
# of all exit statuses:
close IAN or die $!;
rename 'increm-advance.new','increm-advance' or die $!;
-print LOG "Next FULL dump tape is $next\n" or die $!;
-print "Next FULL dump tape is $next\n" or die $!;
+pboth("Next FULL dump tape is $next\n");
setstatus "INCREMENTAL successful: $tapedesc, next full is $next";
exit 0;
Indicates that the filesystem should be frozen before the backup
by using /etc/chiark-backup/snap/<snapkind>. See the head comment
in /etc/chiark-backup/snap/lvm for details of how this works.
+ When snap= is used, the block device must be specified.
expected-diffs is a config file to indicate which
filesystems should *not* be backed up. The scripts do a config
#---------- clean up anything
+snmnt="$vardir/snap-mount"
umount -v "$snmnt" || true
test ! -d "$snmnt" || rmdir -- "$snmnt"
set -e
vd=/var/lib/chiark-backup
cd "$vd"
-test -f snap-drop
+test -f snap-drop || exit 0
sh -x snap-drop || true
rm snap-drop
+chiark-utils (4.0.99.0.3) unstable; urgency=low
+
+ * use -m600 when creating named pipe
+
+ -- Ian Jackson <ian@davenant.greenend.org.uk> Sun, 21 Sep 2003 23:31:39 +0100
+
chiark-utils (4.0.99.0.2) unstable; urgency=low
* ship snap-drop
+ * don't mind devices on local filesystems (was failed stat bug)
+ * snap bugfixes
+ * use dump label
- --
+ -- Ian Jackson <ian@davenant.greenend.org.uk> Sun, 21 Sep 2003 23:06:00 +0100
chiark-utils (4.0.99.0.1) unstable; urgency=low
--- /dev/null
+/etc/chiark-backup/settings.sh
+/etc/chiark-backup/snap/lvm
+/etc/chiark-backup/snap/remount
for m in *.1; do \
mv "$$m" backup-"$$m"; \
done
+ cp \
+ $t/chiark-backup/usr/share/doc/chiark-backup/examples/chiark/settings.sh \
+ $t/chiark-backup/etc/chiark-backup/settings.sh
#
install -d $t/chiark-really/usr/sbin
install -d $t/chiark-really/usr/share/man/man8