#Copy an existing installation over SSH and serve it locally Example bash script: ```bash #!/bin/bash #Description: Copy a Shaarli installation over SSH/SCP, serve it locally with php-cli #Will create a local-shaarli/ directory when you run it, backup your Shaarli there, and serve it locally. #Will NOT download linked pages. It's just a directly usable backup/copy/mirror of your Shaarli #Requires: ssh, scp and a working SSH access to the server where your Shaarli is installed #Usage: ./local-shaarli.sh #Author: nodiscc (nodiscc@gmail.com) #License: MIT (http://opensource.org/licenses/MIT) set -o errexit set -o nounset ##### CONFIG ################# #The port used by php's local server php_local_port=7431 #Name of the SSH server and path where Shaarli is installed #TODO: pass these as command-line arguments remotehost="my.ssh.server" remote_shaarli_dir="/var/www/shaarli" ###### FUNCTIONS ############# _main() { _CBSyncShaarli _CBServeShaarli } _CBSyncShaarli() { remote_temp_dir=$(ssh $remotehost mktemp -d) remote_ssh_user=$(ssh $remotehost whoami) ssh -t "$remotehost" sudo cp -r "$remote_shaarli_dir" "$remote_temp_dir" ssh -t "$remotehost" sudo chown -R "$remote_ssh_user":"$remote_ssh_user" "$remote_temp_dir" scp -rq "$remotehost":"$remote_temp_dir" local-shaarli ssh "$remotehost" rm -r "$remote_temp_dir" } _CBServeShaarli() { #TODO: allow serving a previously downloaded Shaarli #TODO: ask before overwriting local copy, if it exists cd local-shaarli/ php -S localhost:${php_local_port} echo "Please go to http://localhost:${php_local_port}" } ##### MAIN ################# _main ``` This outputs: ```bash $ ./local-shaarli.sh PHP 5.6.0RC4 Development Server started at Mon Sep 1 21:56:19 2014 Listening on http://localhost:7431 Document root is /home/user/local-shaarli/shaarli Press Ctrl-C to quit. [Mon Sep 1 21:56:27 2014] ::1:57868 [200]: /[](.html) [Mon Sep 1 21:56:27 2014] ::1:57869 [200]: /index.html[](.html) [Mon Sep 1 21:56:37 2014] ::1:57881 [200]: /...[](.html) ```