2015-07-22 05:02:10 +02:00
<!DOCTYPE html>
< html >
< head >
< meta charset = "utf-8" >
< meta name = "generator" content = "pandoc" >
< meta name = "viewport" content = "width=device-width, initial-scale=1.0, user-scalable=yes" >
< title > Shaarli - Copy an existing installation over SSH and serve it locally< / title >
< style type = "text/css" > code { white-space : pre ; } < / style >
<!-- [if lt IE 9]>
< script src = "http://html5shim.googlecode.com/svn/trunk/html5.js" > < / script >
<![endif]-->
< style type = "text/css" >
table.sourceCode, tr.sourceCode, td.lineNumbers, td.sourceCode {
margin: 0; padding: 0; vertical-align: baseline; border: none; }
table.sourceCode { width: 100%; line-height: 100%; }
td.lineNumbers { text-align: right; padding-right: 4px; padding-left: 4px; color: #aaaaaa; border-right: 1px solid #aaaaaa; }
td.sourceCode { padding-left: 5px; }
code > span.kw { color: #007020; font-weight: bold; }
code > span.dt { color: #902000; }
code > span.dv { color: #40a070; }
code > span.bn { color: #40a070; }
code > span.fl { color: #40a070; }
code > span.ch { color: #4070a0; }
code > span.st { color: #4070a0; }
code > span.co { color: #60a0b0; font-style: italic; }
code > span.ot { color: #007020; }
code > span.al { color: #ff0000; font-weight: bold; }
code > span.fu { color: #06287e; }
code > span.er { color: #ff0000; font-weight: bold; }
< / style >
< link rel = "stylesheet" href = "github-markdown.css" >
< / head >
< body >
< div id = "local-sidebar" >
< ul >
< li > < a href = "Home.html" > Home< / a > < / li >
< li > Installation
< ul >
< li > < a href = "Server-requirements.html" > Server requirements< / a > < / li >
< li > < a href = "Server-configuration.html" > Server configuration< / a > < / li >
< li > < a href = "Shaarli-configuration.html" > Shaarli configuration< / a > < / li >
< / ul > < / li >
< li > < a href = "Usage.html" > Usage< / a >
< ul >
< li > < a href = "Sharing-button.html" > Sharing button< / a > (bookmarklet)< / li >
< li > < a href = "Firefox-share.html" > Firefox share< / a > < / li >
< li > < a href = "RSS-feeds.html" > RSS feeds< / a > < / li >
< / ul > < / li >
< li > How To
< ul >
< li > < a href = "Backup,-restore,-import-and-export.html" > Backup, restore, import and export< / a > < / li >
< li > < a href = "Copy-an-existing-installation-over-SSH-and-serve-it-locally.html" > Copy an existing installation over SSH and serve it locally< / a > < / li >
< li > < a href = "Download-CSS-styles-from-an-OPML-list.html" > Download CSS styles from an OPML list< / a > < / li >
2015-08-18 00:33:25 +02:00
< li > < a href = "Datastore-hacks.html" > Datastore hacks< / a > < / li >
2015-07-22 05:02:10 +02:00
< / ul > < / li >
< li > < a href = "Troubleshooting.html" > Troubleshooting< / a > < / li >
< li > < a href = "Development.html" > Development< / a >
< ul >
< li > < a href = "GnuPG-signature.html" > GnuPG signature< / a > < / li >
< li > < a href = "Coding-guidelines.html" > Coding guidelines< / a > < / li >
< li > < a href = "Directory-structure.html" > Directory structure< / a > < / li >
< li > < a href = "3rd-party-libraries.html" > 3rd party libraries< / a > < / li >
< li > < a href = "Plugin-System.html" > Plugin System< / a > < / li >
< li > < a href = "Security.html" > Security< / a > < / li >
< li > < a href = "Static-analysis.html" > Static analysis< / a > < / li >
< li > < a href = "Theming.html" > Theming< / a > < / li >
< li > < a href = "Unit-tests.html" > Unit tests< / a > < / li >
< / ul > < / li >
< li > About
< ul >
< li > < a href = "FAQ.html" > FAQ< / a > < / li >
< li > < a href = "Community-&-Related-software.html" > Community & Related software< / a > < / li >
< li > < a href = "TODO.html" > TODO< / a > < / li >
< / ul > < / li >
< / ul >
< / div >
< h1 id = "copy-an-existing-installation-over-ssh-and-serve-it-locally" > Copy an existing installation over SSH and serve it locally< / h1 >
< p > Example bash script:< / p >
< pre class = "sourceCode bash" > < code class = "sourceCode bash" > < span class = "co" > #!/bin/bash< / span >
< span class = "co" > #Description: Copy a Shaarli installation over SSH/SCP, serve it locally with php-cli< / span >
< span class = "co" > #Will create a local-shaarli/ directory when you run it, backup your Shaarli there, and serve it locally.< / span >
< span class = "co" > #Will NOT download linked pages. It' s just a directly usable backup/copy/mirror of your Shaarli< / span >
< span class = "co" > #Requires: ssh, scp and a working SSH access to the server where your Shaarli is installed< / span >
< span class = "co" > #Usage: ./local-shaarli.sh< / span >
< span class = "co" > #Author: nodiscc (nodiscc@gmail.com)< / span >
< span class = "co" > #License: MIT (http://opensource.org/licenses/MIT)< / span >
< span class = "kw" > set< / span > < span class = "kw" > -o< / span > errexit
< span class = "kw" > set< / span > < span class = "kw" > -o< / span > nounset
< span class = "co" > ##### CONFIG #################< / span >
< span class = "co" > #The port used by php' s local server< / span >
< span class = "ot" > php_local_port=< / span > 7431
< span class = "co" > #Name of the SSH server and path where Shaarli is installed< / span >
< span class = "co" > #TODO: pass these as command-line arguments< / span >
< span class = "ot" > remotehost=< / span > < span class = "st" > " my.ssh.server" < / span >
< span class = "ot" > remote_shaarli_dir=< / span > < span class = "st" > " /var/www/shaarli" < / span >
< span class = "co" > ###### FUNCTIONS #############< / span >
< span class = "fu" > _main()< / span > < span class = "kw" > {< / span >
< span class = "kw" > _CBSyncShaarli< / span >
< span class = "kw" > _CBServeShaarli< / span >
< span class = "kw" > }< / span >
< span class = "fu" > _CBSyncShaarli()< / span > < span class = "kw" > {< / span >
< span class = "ot" > remote_temp_dir=$(< / span > < span class = "kw" > ssh< / span > < span class = "ot" > $remotehost< / span > mktemp -d< span class = "ot" > )< / span >
< span class = "ot" > remote_ssh_user=$(< / span > < span class = "kw" > ssh< / span > < span class = "ot" > $remotehost< / span > whoami< span class = "ot" > )< / span >
< span class = "kw" > ssh< / span > -t < span class = "st" > " < / span > < span class = "ot" > $remotehost< / span > < span class = "st" > " < / span > sudo cp -r < span class = "st" > " < / span > < span class = "ot" > $remote_shaarli_dir< / span > < span class = "st" > " < / span > < span class = "st" > " < / span > < span class = "ot" > $remote_temp_dir< / span > < span class = "st" > " < / span >
< span class = "kw" > ssh< / span > -t < span class = "st" > " < / span > < span class = "ot" > $remotehost< / span > < span class = "st" > " < / span > sudo chown -R < span class = "st" > " < / span > < span class = "ot" > $remote_ssh_user< / span > < span class = "st" > " < / span > :< span class = "st" > " < / span > < span class = "ot" > $remote_ssh_user< / span > < span class = "st" > " < / span > < span class = "st" > " < / span > < span class = "ot" > $remote_temp_dir< / span > < span class = "st" > " < / span >
< span class = "kw" > scp< / span > -rq < span class = "st" > " < / span > < span class = "ot" > $remotehost< / span > < span class = "st" > " < / span > :< span class = "st" > " < / span > < span class = "ot" > $remote_temp_dir< / span > < span class = "st" > " < / span > local-shaarli
< span class = "kw" > ssh< / span > < span class = "st" > " < / span > < span class = "ot" > $remotehost< / span > < span class = "st" > " < / span > rm -r < span class = "st" > " < / span > < span class = "ot" > $remote_temp_dir< / span > < span class = "st" > " < / span >
< span class = "kw" > }< / span >
< span class = "fu" > _CBServeShaarli()< / span > < span class = "kw" > {< / span >
< span class = "co" > #TODO: allow serving a previously downloaded Shaarli< / span >
< span class = "co" > #TODO: ask before overwriting local copy, if it exists< / span >
< span class = "kw" > cd< / span > local-shaarli/
< span class = "kw" > php< / span > -S localhost:< span class = "ot" > ${php_local_port}< / span >
< span class = "kw" > echo< / span > < span class = "st" > " Please go to http://localhost:< / span > < span class = "ot" > ${php_local_port}< / span > < span class = "st" > " < / span >
< span class = "kw" > }< / span >
< span class = "co" > ##### MAIN #################< / span >
< span class = "kw" > _main< / span > < / code > < / pre >
< p > This outputs:< / p >
< pre class = "sourceCode bash" > < code class = "sourceCode bash" > $ < span class = "kw" > ./local-shaarli.sh< / span >
< span class = "kw" > PHP< / span > 5.6.0RC4 Development Server started at Mon Sep 1 21:56:19 2014
< span class = "kw" > Listening< / span > on http://localhost:7431
< span class = "kw" > Document< / span > root is /home/user/local-shaarli/shaarli
< span class = "kw" > Press< / span > Ctrl-C to quit.
[< span class = "kw" > Mon< / span > Sep 1 21:56:27 2014] ::1:57868 [200]: /[](.html)
[< span class = "kw" > Mon< / span > Sep 1 21:56:27 2014] ::1:57869 [200]: /index.html[](.html)
[< span class = "kw" > Mon< / span > Sep 1 21:56:37 2014] ::1:57881 [200]: /...[](.html)< / code > < / pre >
< / body >
< / html >