projects
/
scripts.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Update.
[scripts.git]
/
rsync-luks.sh
diff --git
a/rsync-luks.sh
b/rsync-luks.sh
index
87daf19
..
7f0a5e0
100755
(executable)
--- a/
rsync-luks.sh
+++ b/
rsync-luks.sh
@@
-14,24
+14,19
@@
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
# Written by and Copyright (C) Francois Fleuret #
# along with this program. If not, see <http://www.gnu.org/licenses/>. #
# #
# Written by and Copyright (C) Francois Fleuret #
-# Contact <francois
.fleuret@idiap.ch> for comments & bug reports
#
+# Contact <francois
@fleuret.org> for comments & bug reports
#
#########################################################################
#########################################################################
-# This script takes two filenames as arguments, mounts them as luks
-# volumes, and synchronizes their contents.
-
-# IT CHANGES THE CONTENT OF THE SECOND ARGUMENT
-
set -e
set -o pipefail
set -e
set -o pipefail
-if [
"$1" == "-h" ] || [ "$1" == "--help"
]; then
+if [
[ "$1" == "-h" ]] || [[ "$1" == "--help" ]
]; then
cat <<EOF
Usage: rsync-luks.sh <source file> <dest file>
cat <<EOF
Usage: rsync-luks.sh <source file> <dest file>
-Mounts both files as LUKS volume
and rsync the source to the dest. It
-first performs a dry-run and then asks for interactive confirmation
-before synchronizing for real.
+Mounts both files as LUKS volume
s and rsyncs the source to the
+dest. It first performs a dry-run and then asks for interactive
+
confirmation
before synchronizing for real.
Comments and bug reports to francois@fleuret.org
Comments and bug reports to francois@fleuret.org
@@
-39,21
+34,21
@@
EOF
exit 0
fi
exit 0
fi
-[
-f "$1" ] && [ -f "$2"
] || (echo "$0 <source> <dest>" >&2 && exit 1)
+[
[ -f "$1" ]] && [[ -f "$2" ]
] || (echo "$0 <source> <dest>" >&2 && exit 1)
-[
-e "/dev/mapper/crypt-src"
] && (echo "/dev/mapper/crypt-src already exists." >&2 && exit 1)
+[
[ -e "/dev/mapper/crypt-src" ]
] && (echo "/dev/mapper/crypt-src already exists." >&2 && exit 1)
-[
-e "/dev/mapper/crypt-dst"
] && (echo "/dev/mapper/crypt-dst already exists." >&2 && exit 1)
+[
[ -e "/dev/mapper/crypt-dst" ]
] && (echo "/dev/mapper/crypt-dst already exists." >&2 && exit 1)
function exit_handler () {
function exit_handler () {
- [
-n "${VOL_SRC+yes}"
] && umount "${VOL_SRC}" && rmdir "${VOL_SRC}" && unset VOL_SRC
- [
-e "/dev/mapper/crypt-src"
] && cryptsetup luksClose crypt-src
- [
-n "${LOOP_SRC+yes}"
] && losetup -d "${LOOP_SRC}" && unset LOOP_SRC
+ [
[ -n "${VOL_SRC+yes}" ]
] && umount "${VOL_SRC}" && rmdir "${VOL_SRC}" && unset VOL_SRC
+ [
[ -e "/dev/mapper/crypt-src" ]
] && cryptsetup luksClose crypt-src
+ [
[ -n "${LOOP_SRC+yes}" ]
] && losetup -d "${LOOP_SRC}" && unset LOOP_SRC
- [
-n "${VOL_DST+yes}"
] && umount "${VOL_DST}" && rmdir "${VOL_DST}" && unset VOL_DST
- [
-e "/dev/mapper/crypt-dst"
] && cryptsetup luksClose crypt-dst
- [
-n "${LOOP_DST+yes}"
] && losetup -d "${LOOP_DST}" && unset LOOP_DST
+ [
[ -n "${VOL_DST+yes}" ]
] && umount "${VOL_DST}" && rmdir "${VOL_DST}" && unset VOL_DST
+ [
[ -e "/dev/mapper/crypt-dst" ]
] && cryptsetup luksClose crypt-dst
+ [
[ -n "${LOOP_DST+yes}" ]
] && losetup -d "${LOOP_DST}" && unset LOOP_DST
}
}
@@
-66,7
+61,7
@@
LOOP_SRC="$(losetup -f)"
losetup "${LOOP_SRC}" "$1"
cryptsetup luksOpen "${LOOP_SRC}" crypt-src
VOL_SRC="$(mktemp -d /tmp/sync-luks.XXXXXX)"
losetup "${LOOP_SRC}" "$1"
cryptsetup luksOpen "${LOOP_SRC}" crypt-src
VOL_SRC="$(mktemp -d /tmp/sync-luks.XXXXXX)"
-mount /dev/mapper/crypt-src "${VOL_SRC}"
+mount
-o ro
/dev/mapper/crypt-src "${VOL_SRC}"
LOOP_DST="$(losetup -f)"
losetup "${LOOP_DST}" "$2"
LOOP_DST="$(losetup -f)"
losetup "${LOOP_DST}" "$2"
@@
-86,11
+81,11
@@
rsync -n --itemize-changes --delete --progress -axz "${VOL_SRC}/" "${VOL_DST}/"
# Ask for confirmation and synchronize
echo "**********************************************************************"
# Ask for confirmation and synchronize
echo "**********************************************************************"
-echo "*
Synchronize [y]/N ?
"
+echo "*
Press 'y' to synchronize, anything else to cancel.
"
read -n 1 KEY
read -n 1 KEY
-if [
"${KEY}" == "y"
]; then
+if [
[ "${KEY}" == "y" ]
]; then
rsync --itemize-changes --delete --progress -axz "${VOL_SRC}/" "${VOL_DST}/"
else
echo "No synchronization."
rsync --itemize-changes --delete --progress -axz "${VOL_SRC}/" "${VOL_DST}/"
else
echo "No synchronization."