mirror of
https://asciireactor.com/o4data/zfs-backup.git
synced 2024-11-22 20:25:05 +00:00
Compare commits
No commits in common. "a5600ff6e6ee8bdae9fb9ef750cc26f795589e23" and "e090fcf21dacee01f8cda81dac9e016f3c702cf5" have entirely different histories.
a5600ff6e6
...
e090fcf21d
45
backup.sh
45
backup.sh
@ -44,8 +44,7 @@ debug()
|
|||||||
run_send_recv()
|
run_send_recv()
|
||||||
{
|
{
|
||||||
ssh_cmd="ssh $SSH_SEND_OPTS -o port=$port $user@$addr"
|
ssh_cmd="ssh $SSH_SEND_OPTS -o port=$port $user@$addr"
|
||||||
pv_cmd="pv -qL ${speed:-$DEFAULT_SPEED}"
|
if [ $ZB_TEST_MODE = "TRUE" ]; then
|
||||||
if [ "$ZB_TEST_MODE" = "TRUE" ]; then
|
|
||||||
echo "$send_cmd | $pv_cmd | $ssh_cmd $recv_cmd"
|
echo "$send_cmd | $pv_cmd | $ssh_cmd $recv_cmd"
|
||||||
else
|
else
|
||||||
$send_cmd | $pv_cmd | $ssh_cmd $recv_cmd
|
$send_cmd | $pv_cmd | $ssh_cmd $recv_cmd
|
||||||
@ -54,7 +53,7 @@ run_send_recv()
|
|||||||
|
|
||||||
run_snapshot()
|
run_snapshot()
|
||||||
{
|
{
|
||||||
if [ "$ZB_TEST_MODE" = "TRUE" ]; then
|
if [ $ZB_TEST_MODE = "TRUE" ]; then
|
||||||
echo zfs snapshot $ZFS_SNAPSHOT_OPTS $dset@$snapid
|
echo zfs snapshot $ZFS_SNAPSHOT_OPTS $dset@$snapid
|
||||||
else
|
else
|
||||||
zfs snapshot $ZFS_SNAPSHOT_OPTS $dset@$snapid
|
zfs snapshot $ZFS_SNAPSHOT_OPTS $dset@$snapid
|
||||||
@ -63,7 +62,7 @@ run_snapshot()
|
|||||||
|
|
||||||
run_allow()
|
run_allow()
|
||||||
{
|
{
|
||||||
if [ "$ZB_TEST_MODE" = "TRUE" ]; then
|
if [ $ZB_TEST_MODE = "TRUE" ]; then
|
||||||
echo zfs allow -u $LOCAL_USER $ORIGIN_PERMS $dset
|
echo zfs allow -u $LOCAL_USER $ORIGIN_PERMS $dset
|
||||||
else
|
else
|
||||||
zfs allow -u $LOCAL_USER $ORIGIN_PERMS $dset
|
zfs allow -u $LOCAL_USER $ORIGIN_PERMS $dset
|
||||||
@ -73,7 +72,7 @@ run_allow()
|
|||||||
run_remote()
|
run_remote()
|
||||||
{
|
{
|
||||||
ssh_cmd="ssh $SSH_SEND_OPTS -o port=$port $user@$addr"
|
ssh_cmd="ssh $SSH_SEND_OPTS -o port=$port $user@$addr"
|
||||||
if [ "$ZB_TEST_MODE" = "TRUE" ]; then
|
if [ $ZB_TEST_MODE = "TRUE" ]; then
|
||||||
echo "\`$ssh_cmd $remote_cmd\`"
|
echo "\`$ssh_cmd $remote_cmd\`"
|
||||||
else
|
else
|
||||||
$ssh_cmd $remote_cmd
|
$ssh_cmd $remote_cmd
|
||||||
@ -81,7 +80,7 @@ run_remote()
|
|||||||
}
|
}
|
||||||
|
|
||||||
set_compression() {
|
set_compression() {
|
||||||
case "$SEND_COMPRESSED" in
|
case $SEND_COMPRESSED in
|
||||||
[tTyY]*) ZFS_SEND_OPTS="$ZFS_SEND_OPTS -c"
|
[tTyY]*) ZFS_SEND_OPTS="$ZFS_SEND_OPTS -c"
|
||||||
debug "Enabled send as compressed datasets." ;;
|
debug "Enabled send as compressed datasets." ;;
|
||||||
esac
|
esac
|
||||||
@ -90,14 +89,14 @@ set_compression() {
|
|||||||
populate_datasets()
|
populate_datasets()
|
||||||
{
|
{
|
||||||
while read dset dataset_options; do
|
while read dset dataset_options; do
|
||||||
case "$dset" in
|
case $dset in
|
||||||
\#*) continue;;
|
\#*) continue;;
|
||||||
esac
|
esac
|
||||||
|
|
||||||
snapshot_dataset="yes"
|
snapshot_dataset="yes"
|
||||||
send_dataset="yes"
|
send_dataset="yes"
|
||||||
for option in $dataset_options; do
|
for option in $dataset_options; do
|
||||||
case "$option" in
|
case $option in
|
||||||
"nosnap"* )
|
"nosnap"* )
|
||||||
snapshot_dataset=""
|
snapshot_dataset=""
|
||||||
;;
|
;;
|
||||||
@ -133,8 +132,8 @@ list_datasets()
|
|||||||
list_remote_datasets() {
|
list_remote_datasets() {
|
||||||
while read addr user port zroot speed; do
|
while read addr user port zroot speed; do
|
||||||
echo "=== $user@$addr $zroot ==="
|
echo "=== $user@$addr $zroot ==="
|
||||||
if [ "$zroot" ]; then
|
if [ $zroot ]; then
|
||||||
case "$zroot" in
|
case $zroot in
|
||||||
*"/") ;;
|
*"/") ;;
|
||||||
*) zroot="$zroot/" ;;
|
*) zroot="$zroot/" ;;
|
||||||
esac
|
esac
|
||||||
@ -157,7 +156,7 @@ get_latest_snapshot()
|
|||||||
get_latest_remote_snapshot()
|
get_latest_remote_snapshot()
|
||||||
{
|
{
|
||||||
if [ $zroot ]; then
|
if [ $zroot ]; then
|
||||||
case "$zroot" in
|
case $zroot in
|
||||||
*"/") ;;
|
*"/") ;;
|
||||||
*) zroot="$zroot/" ;;
|
*) zroot="$zroot/" ;;
|
||||||
esac
|
esac
|
||||||
@ -165,6 +164,7 @@ get_latest_remote_snapshot()
|
|||||||
list_cmd="zfs list -t snapshot $zroot$dset"
|
list_cmd="zfs list -t snapshot $zroot$dset"
|
||||||
remote_cmd="$list_cmd|tail -n1|cut -d'@' -f2|cut -d' ' -f 1"
|
remote_cmd="$list_cmd|tail -n1|cut -d'@' -f2|cut -d' ' -f 1"
|
||||||
run_remote
|
run_remote
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
zfs_allow_origin()
|
zfs_allow_origin()
|
||||||
@ -179,8 +179,8 @@ zfs_allow_mirrors()
|
|||||||
{
|
{
|
||||||
while read addr user port zroot speed; do
|
while read addr user port zroot speed; do
|
||||||
echo "=== $user@$addr $zroot ==="
|
echo "=== $user@$addr $zroot ==="
|
||||||
if [ "$zroot" ]; then
|
if [ $zroot ]; then
|
||||||
case "$zroot" in
|
case $zroot in
|
||||||
*"/") ;;
|
*"/") ;;
|
||||||
*) zroot="$zroot/" ;;
|
*) zroot="$zroot/" ;;
|
||||||
esac
|
esac
|
||||||
@ -200,7 +200,7 @@ create_snapshots()
|
|||||||
snapid="`date -I`-`date +%s`-$LOCAL_TZ"
|
snapid="`date -I`-`date +%s`-$LOCAL_TZ"
|
||||||
for dset in $SNAPSHOT_DATASETS; do
|
for dset in $SNAPSHOT_DATASETS; do
|
||||||
run_snapshot
|
run_snapshot
|
||||||
debug "Created snapshot $dset@$snapid."
|
debug Created snapshot $dset@$snapid.
|
||||||
done
|
done
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -208,8 +208,8 @@ send_latest()
|
|||||||
{
|
{
|
||||||
while read addr user port zroot speed; do
|
while read addr user port zroot speed; do
|
||||||
echo "=== $user@$addr $zroot ==="
|
echo "=== $user@$addr $zroot ==="
|
||||||
if [ "$zroot" ]; then
|
if [ $zroot ]; then
|
||||||
case "$zroot" in
|
case $zroot in
|
||||||
*"/") ;;
|
*"/") ;;
|
||||||
*) zroot="$zroot/" ;;
|
*) zroot="$zroot/" ;;
|
||||||
esac
|
esac
|
||||||
@ -218,8 +218,9 @@ send_latest()
|
|||||||
rset=`echo $dset|cut -d: -f2`
|
rset=`echo $dset|cut -d: -f2`
|
||||||
dset=`echo $dset|cut -d: -f1`
|
dset=`echo $dset|cut -d: -f1`
|
||||||
debug "Processing $dset (remote $rset)."
|
debug "Processing $dset (remote $rset)."
|
||||||
snap1=`get_latest_snapshot`
|
snap1=`get_latest_snapshot $dset`
|
||||||
send_cmd="zfs send $ZFS_SEND_OPTS $dset@$snap1"
|
send_cmd="zfs send $ZFS_SEND_OPTS $dset@$snap1"
|
||||||
|
pv_cmd="pv -qL ${speed:-$DEFAULT_SPEED}"
|
||||||
recv_cmd="zfs recv $ZFS_RECV_OPTS $zroot$rset"
|
recv_cmd="zfs recv $ZFS_RECV_OPTS $zroot$rset"
|
||||||
run_send_recv
|
run_send_recv
|
||||||
done
|
done
|
||||||
@ -230,8 +231,8 @@ send_increment()
|
|||||||
{
|
{
|
||||||
while read addr user port zroot speed; do
|
while read addr user port zroot speed; do
|
||||||
echo "=== $user@$addr $zroot ==="
|
echo "=== $user@$addr $zroot ==="
|
||||||
if [ "$zroot" ]; then
|
if [ $zroot ]; then
|
||||||
case "$zroot" in
|
case $zroot in
|
||||||
*"/") ;;
|
*"/") ;;
|
||||||
*) zroot="$zroot/" ;;
|
*) zroot="$zroot/" ;;
|
||||||
esac
|
esac
|
||||||
@ -242,6 +243,7 @@ send_increment()
|
|||||||
snap1=`get_latest_snapshot`
|
snap1=`get_latest_snapshot`
|
||||||
snap0=`get_latest_remote_snapshot`
|
snap0=`get_latest_remote_snapshot`
|
||||||
send_cmd="zfs send $ZFS_SEND_OPTS -i $dset@$snap0 $dset@$snap1"
|
send_cmd="zfs send $ZFS_SEND_OPTS -i $dset@$snap0 $dset@$snap1"
|
||||||
|
pv_cmd="pv -qL ${speed:-$DEFAULT_SPEED}"
|
||||||
recv_cmd="zfs recv $ZFS_RECV_OPTS $zroot$rset"
|
recv_cmd="zfs recv $ZFS_RECV_OPTS $zroot$rset"
|
||||||
run_send_recv
|
run_send_recv
|
||||||
done
|
done
|
||||||
@ -251,11 +253,12 @@ send_increment()
|
|||||||
|
|
||||||
################################### MAIN ####################################
|
################################### MAIN ####################################
|
||||||
|
|
||||||
|
### Options
|
||||||
set -- `getopt "tvl:" "$@"` || {
|
set -- `getopt "tvl:" "$@"` || {
|
||||||
echo "Usage: `basename $0` [-tvl] [command]" 1>&2
|
echo "Usage: `basename $0` [-tvl] [command]" 1>&2
|
||||||
exit 1
|
exit 1
|
||||||
}
|
}
|
||||||
|
ZB_TEST_MODE=FALSE
|
||||||
while :; do
|
while :; do
|
||||||
case "$1" in
|
case "$1" in
|
||||||
-t)
|
-t)
|
||||||
@ -267,7 +270,7 @@ while :; do
|
|||||||
ZFS_SEND_OPTS="$ZFS_SEND_OPTS -v"
|
ZFS_SEND_OPTS="$ZFS_SEND_OPTS -v"
|
||||||
# Current on by default.
|
# Current on by default.
|
||||||
# ZFS_RECV_OPTS="$ZFS_RECV_OPTS -v"
|
# ZFS_RECV_OPTS="$ZFS_RECV_OPTS -v"
|
||||||
debug "Enabled verbose mode."
|
debug "Enabled terbose mode."
|
||||||
;;
|
;;
|
||||||
--) shift; break ;;
|
--) shift; break ;;
|
||||||
esac
|
esac
|
||||||
|
Loading…
Reference in New Issue
Block a user