ssfs annotate ssfs @ rev 66
Add some doc and few small fixes
author | Christophe Lincoln <pankso@slitaz.org> |
---|---|
date | Mon Jun 13 18:30:46 2011 +0200 (2011-06-13) |
parents | 8554492c73b1 |
children | 5940e1d51942 |
rev | line source |
---|---|
pankso@3 | 1 #!/bin/sh |
pankso@3 | 2 # |
pankso@3 | 3 # SliTaz Secure File Storage. Fast live sync using: SSH, Rsync, Lsyncd. |
pankso@3 | 4 # Configuration file is a LUA script in user space. |
pankso@3 | 5 # |
pankso@3 | 6 # Copyright (C) SliTaz GNU/Linux - BSD License |
pankso@3 | 7 # Author: Christophe Lincoln <pankso@slitaz.org> |
pankso@3 | 8 # |
pankso@3 | 9 |
pankso@3 | 10 app=$(basename $0) |
pankso@3 | 11 pid=$HOME/.local/var/run/$app.pid |
pankso@3 | 12 logdir=$HOME/.local/var/log/$app |
pankso@3 | 13 config=$HOME/.config/$app/client.lua |
pankso@3 | 14 |
pankso@3 | 15 # Parse cmdline options. |
pankso@3 | 16 for opt in $@ |
pankso@3 | 17 do |
pankso@3 | 18 case "$opt" in |
pankso@3 | 19 --login=*) |
pankso@3 | 20 login=${opt#--login=} ;; |
pankso@3 | 21 --host=*) |
pankso@3 | 22 host=${opt#--host=} ;; |
pankso@3 | 23 *) |
pankso@3 | 24 continue ;; |
pankso@3 | 25 esac |
pankso@3 | 26 done |
pankso@3 | 27 |
pankso@3 | 28 # |
pankso@3 | 29 # Functions |
pankso@3 | 30 # |
pankso@3 | 31 |
pankso@3 | 32 # Built-in usage. |
pankso@3 | 33 help() { |
pankso@3 | 34 cat << EOT |
pankso@3 | 35 |
pankso@3 | 36 $(echo -e "\033[1m$(gettext "Usage:")\033[0m") $app [command] [--option=] |
pankso@3 | 37 |
pankso@3 | 38 $(echo -e "\033[1m$(gettext "Commands:")\033[0m") |
pankso@60 | 39 help $(gettext "Display this short help usage.") |
pankso@3 | 40 info $(gettext "Display configuration settings.") |
pankso@3 | 41 setup $(gettext "Setup client configuration and RSA key.") |
pankso@3 | 42 sync $(gettext "Sync from server and start daemon.") |
pankso@3 | 43 stop $(gettext "Stop monitoring ~/Sync folder.") |
pankso@57 | 44 login $(gettext "Connect to remote host via SSH.") |
pankso@3 | 45 |
pankso@3 | 46 $(echo -e "\033[1m$(gettext "Options:")\033[0m") |
pankso@3 | 47 --login= $(gettext "Login name on remote host.") |
pankso@3 | 48 --host= $(gettext "Server host name or IP.") |
pankso@3 | 49 |
pankso@3 | 50 EOT |
pankso@3 | 51 } |
pankso@3 | 52 |
pankso@3 | 53 # Display config settings. |
pankso@3 | 54 config_info() { |
pankso@3 | 55 [ ! -f "$config" ] && exit 0 |
pankso@3 | 56 fgrep '=' $config | sed s'/^ //' |
pankso@3 | 57 } |
pankso@3 | 58 |
pankso@3 | 59 # Create a Lua configuration file for lsyncd. |
pankso@3 | 60 gen_config() { |
pankso@3 | 61 mkdir -p $(dirname $config) |
pankso@3 | 62 cat > $config << EOT |
pankso@3 | 63 -- Configuration file for SliTaz Secure Filesystem lsyncd daemon. |
pankso@3 | 64 |
pankso@3 | 65 sync { |
pankso@3 | 66 default.rsyncssh, |
pankso@3 | 67 source = "$HOME/Sync", |
pankso@3 | 68 host = "$login@$host", |
pankso@3 | 69 targetdir = "Sync/" |
pankso@3 | 70 } |
pankso@3 | 71 EOT |
pankso@3 | 72 } |
pankso@3 | 73 |
pankso@55 | 74 get_config() { |
pankso@55 | 75 at=$(fgrep host $config | cut -d '"' -f 2) |
pankso@55 | 76 login=${at%@*} |
pankso@55 | 77 host=${at#*@} |
pankso@55 | 78 } |
pankso@55 | 79 |
pankso@3 | 80 # |
pankso@3 | 81 # Commands |
pankso@3 | 82 # |
pankso@3 | 83 |
pankso@3 | 84 case "$1" in |
pankso@3 | 85 info) |
pankso@3 | 86 size=$(du -sh $HOME/Sync | awk '{print $1}') |
pankso@3 | 87 echo "" && config_info && echo "" |
pankso@3 | 88 gettext "RSA key :"; echo " $HOME/.ssh/id_rsa" |
pankso@3 | 89 gettext "Sync size :"; echo " $size" |
pankso@3 | 90 echo "" ;; |
pankso@3 | 91 setup) |
pankso@3 | 92 # We need a login and host name or IP. |
pankso@3 | 93 if [ -z "$login" ] || [ -z "$host" ]; then |
pankso@3 | 94 gettext -e "\nUsage:"; echo -e \ |
pankso@3 | 95 " $(basename $0) setup --login=user --host=server\n" && exit 0 |
pankso@3 | 96 fi |
pankso@3 | 97 gen_config |
pankso@3 | 98 mkdir -p $logdir $(dirname $pid) |
pankso@3 | 99 |
pankso@3 | 100 # Configure passwordless login via RSA key. |
pankso@3 | 101 if [ ! -f "$HOME/.ssh/id_rsa" ]; then |
pankso@3 | 102 mkdir -p $HOME/.ssh |
pankso@3 | 103 ssh-keygen -b 2048 -f $HOME/.ssh/id_rsa -P '' |
pankso@3 | 104 fi |
pankso@50 | 105 echo "" |
pankso@3 | 106 |
pankso@3 | 107 # Upload key to the server. |
pankso@3 | 108 gettext "Sending RSA secure key to:"; echo " $host" |
paul@59 | 109 gettext "Please enter your Ssfs password." |
pankso@50 | 110 echo -e "\n" |
pankso@3 | 111 cat $HOME/.ssh/id_rsa.pub | \ |
pankso@18 | 112 ssh $login@$host 'cat - >> ~/.ssh/authorized_keys' || exit 1 |
pankso@18 | 113 gettext "Client is setup you can now sync"; echo ;; |
pankso@3 | 114 sync) |
pankso@3 | 115 # Sync can be called at session startup or from cmdline to retrive |
pankso@3 | 116 # files from the server. |
pankso@3 | 117 [ ! -f "$config" ] && gettext -e "Missing config file\n" && exit 1 |
pankso@3 | 118 at=$(fgrep host $config | cut -d '"' -f 2) |
pankso@3 | 119 login=${at%@*} |
pankso@3 | 120 host=${at#*@} |
pankso@3 | 121 gettext -e "\nSyncing from:"; echo " $login@$host" |
pankso@3 | 122 |
pankso@3 | 123 # First sync host with server. |
pankso@3 | 124 rsync -r -a -v -h -z -u --delete \ |
pankso@3 | 125 --log-file=$logdir/rsync.log \ |
pankso@3 | 126 -e "ssh -l $login" $host:~/Sync/ ~/Sync/ | \ |
pankso@3 | 127 sed -e "/^$/"d -e "/^.\/$/"d |
pankso@3 | 128 |
pankso@3 | 129 # Monitor local folder if not yet running. |
pankso@66 | 130 if [ ! -s "$pid" ]; then |
pankso@3 | 131 gettext "Starting lsyncd daemon..." |
pankso@3 | 132 lsyncd -pidfile $pid -log all -logfile $logdir/lsyncd.log $config |
pankso@3 | 133 else |
pankso@3 | 134 gettext "Lcyncd daemon running PID:"; echo " $(cat $pid)" |
pankso@3 | 135 fi && echo "" ;; |
pankso@3 | 136 stop) |
pankso@3 | 137 # Kill daemon and remove pidfile. |
pankso@3 | 138 [ ! -f "$pid" ] && gettext -e "Daemon is not running\n" && exit 0 |
pankso@3 | 139 kill=$(cat $pid) |
pankso@43 | 140 gettext "Stopping"; echo " $app PID: $kill" |
pankso@44 | 141 kill $kill 2>/dev/null |
pankso@44 | 142 rm -f $pid ;; |
pankso@57 | 143 login) |
pankso@55 | 144 # Connect user to Ssfs server via SSH. |
pankso@55 | 145 get_config |
pankso@55 | 146 ssh $login@$host ;; |
pankso@3 | 147 *) |
pankso@3 | 148 help ;; |
pankso@3 | 149 esac |
pankso@3 | 150 exit 0 |