Vladislav V. Prodan wrote:
Можно добавить mbuffer для работы с нерезиновыми каналами?
Да, оказывается я тоже это хотел.
Только наверное вместо добавления кучи опций для разнообразной
упаковки/шейпинга стоит всё перевести на входящий/исходящий фильтры?
--
Sphinx of black quartz judge my vow.
Index: daily/synczfs
===================================================================
--- daily/synczfs (revision 199)
+++ daily/synczfs (working copy)
@@ -7,9 +7,17 @@
# daily_synczfs_servers:
# space separated list of server names (resolvable)
#
-# daily_synczfs_<server>_compress:
-# all data exchange would be compressed with xz
+# daily_synczfs_<server>_input_filter:
+# all data on remote system would be piped through this command[s]
+# possible usage:
+# - compression: '| xz -9e' or '| bzip2 -9';
+# - rate limiting: '| mbuffer -r 256k' or '| pv -L 256k', notice
that misc/mbuffer or sysutils/pv should be installed.
#
+# daily_synczfs_<server>_output_filter:
+# all data on local system would be piped through this command[s]
+# possible usage:
+# - decompression: '| xz -d' or '| bzip2 -d'.
+#
# daily_synczfs_<server>_fs:
# space separated list of remote filesystem aliases
#
@@ -60,14 +68,9 @@
hostname="$server"
fi
- # check compression status
- eval compress=\"\${daily_synczfs_${server}_compress="NO"}\"
- pack=
- unpack=
- if checkyesno compress; then
- pack='| xz -9e'
- unpack='| xz -d'
- fi
+ # get local/remote filters
+ eval ifilter=\"\${daily_synczfs_${server}_input_filter}\"
+ eval ofilter=\"\${daily_synczfs_${server}_output_filter}\"
# check server access
if ! ping -oc 5 $hostname >/dev/null 2>&1; then
@@ -104,7 +107,7 @@
echo " Server $server is mentioned in
\$daily_synczfs_${server}_${alias}_fsname contains banned chars."
exit 2
elif ! zfs list -Ht filesystem
$daily_synczfs_root/$fsname >/dev/null 2>&1; then
- su "$daily_synczfs_user" -c "zfs create
"$daily_synczfs_root/$fsname" ; ssh -oBatchMode=yes
$daily_synczfs_user@$hostname \"zfs send -R $rfsname@`tail -1 $rsnaps` $pack\"
$unpack | zfs receive -Fu $daily_synczfs_root/$fsname ; zfs inherit mountpoint
$daily_synczfs_root/$fsname"
+ su "$daily_synczfs_user" -c "zfs create
"$daily_synczfs_root/$fsname" ; ssh -oBatchMode=yes
$daily_synczfs_user@$hostname \"zfs send -R $rfsname@`tail -1 $rsnaps`
$ifilter\" $ofilter | zfs receive -Fu $daily_synczfs_root/$fsname ; zfs inherit
mountpoint $daily_synczfs_root/$fsname"
else
lsnaps=`mktemp -t synczfs`
zfs list -Hrt snapshot -d1
"$daily_synczfs_root/$fsname" | awk 'BEGIN{FS="[ @\t]+"}{print$2}' > $lsnaps
@@ -126,7 +129,7 @@
done
fi
rm -rf $lsnaps
- su "$daily_synczfs_user" -c "ssh
-oBatchMode=yes $daily_synczfs_user@$hostname \"zfs send -I $rfsname@$common
$rfsname@`tail -1 $rsnaps` $pack\" $unpack | zfs receive -F
$daily_synczfs_root/$fsname"
+ su "$daily_synczfs_user" -c "ssh
-oBatchMode=yes $daily_synczfs_user@$hostname \"zfs send -I $rfsname@$common
$rfsname@`tail -1 $rsnaps` $ifilter\" $ofilter | zfs receive -F
$daily_synczfs_root/$fsname"
fi
rm -rf $rsnaps
done