Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #!/bin/bash
- # rdiff: remote diff, copyleft 2013 under GPL jc.unternet.net
- # for bug reports replace first dot with @
- set +H # prevent history expansion
- sshfs_mount() {
- remote="$1" # rather, purported remote; we shall find out
- if [ ! -e "$remote" -a "${remote%%:*}" != "$remote" ]; then
- old_remote="$remote"
- remote=$(mktemp -d)
- if ! sshfs "$old_remote" "$remote"; then
- if ! sshfs "${old_remote%[:/]*}" "$remote"; then
- rmdir $remote
- remote="$old_remote"
- else
- remote="$remote/${old_remote##*[:/]}"
- fi
- fi
- fi
- echo "$remote"
- }
- sshfs_umount() {
- tempdir="$1"
- while [ ${#tempdir} -gt 1 -a ! -d "$tempdir" ]; do
- if [ "$tempdir" = "${tempdir%/*}" ]; then
- break
- else
- tempdir="${tempdir%/*}"
- fi
- done
- while [ ${#tempdir} -gt 1 -a -d "$tempdir" ]; do
- if fusermount -u "$tempdir"; then
- rmdir "$tempdir"
- break
- elif [ "$tempdir" = "${tempdir%/*}" ]; then
- break
- else
- tempdir=${tempdir%/*}
- fi
- done
- }
- diff_source="$(sshfs_mount "${@:$#-1:1}")"
- diff_target="$(sshfs_mount "${@:$#:1}")"
- diff "${@:1:$#-2}" "$diff_source" "$diff_target"
- exstat=$?
- sshfs_umount "$diff_source"
- sshfs_umount "$diff_target"
- exit $exstat
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement