在 Ubuntu 16.04 上使用 sitecopy 维护远程网站
本教程适用于这些操作系统版本
- Ubuntu 11.04 (Natty Narwhal)
在此页
- 1 条初步说明
- 2 安装网站副本
- 3 配置站点复制
- 4 首次使用
- 4.1 现有的远程站点和本地副本,两者同步
- 4.2 现有远程站点,无本地副本
- 4.3 新远程站点,现有本地副本
sitecopy 是一种用于将本地存储的网站复制到远程 Web 服务器(使用 FTP 或 WebDAV)的工具。它通过上传修改后的本地文件并删除已在本地计算机上删除的远程文件,帮助您使远程站点与本地副本保持同步。本教程展示了如何使用 sitecopy 从本地 Ubuntu 16.04 桌面管理远程网站。
1 初步说明
我在我的本地 Ubuntu 桌面上使用用户名直到(我以该用户身份登录到我的本地 Linux 桌面 - 请不要以根用户身份登录)。远程网站 example.com 的文件存储在本地计算机上的目录 /home/till/sites/example.com/ 中。远程文档根目录是 /var/www/example.com/web/。
您可以将 sitecopy 与 FTP 和 WebDAV 一起使用,因此您应该在远程服务器上拥有 FTP 或 WebDAV 帐户。我在这里使用 FTP 用户名 defaulttill 和密码 howtoforge。
我用于这些示例的远程网站是使用 ISPConfig 创建的。但是您可以访问任何具有 FTP 或 WebDAV 访问权限的站点。
2 安装站点副本
Sitecopy 可以按如下方式安装在本地桌面上(我们需要 root 权限,因此我们使用 sudo):
sudo apt-get -y install sitecopy
您现在应该查看 sitecopys 手册页以熟悉其选项:
man sitecopy
3 配置站点副本
转到本地桌面上的主目录...
cd ~
...并创建权限为 700 的目录 .sitecopy(sitecopy 使用该目录存储文件详细信息):
mkdir -m 700 .sitecopy
接下来,创建 sitecopy 配置文件 .sitecopyrc:
touch .sitecopyrc
chmod 600 .sitecopyrc打开文件...
nano .sitecopyrc
...并填写 example.com 站点的配置。这里有两个例子,一个用于 FTP...
site example.com server example.com username defaulttill password howtoforge local /home/till/sites/example.com/ remote ~/web/ exclude *.bak exclude *~
...还有一个用于 WebDAV:
site example.com server example.com protocol webdav username defaulttill password howtoforge local /home/till/sites/example.com/ remote /var/www/example.com/web/ exclude *.bak exclude *~
(您可以为要使用 sitecopy 管理的每个网站定义一个节。)
站点指令后面必须跟有网站名称 - 您可以自由选择一个,例如example.com 或我的网站。稍后将在 sitecopy 命令中使用此名称。以下属于该站点的配置选项必须缩进!
以下大多数配置选项都是不言自明的。默认协议是 FTP;如果要使用 WebDAV,请指定协议 webdav。 local 指令包含网站副本的本地路径,remote 包含远程服务器上网站的路径 - 它可以是绝对的或相对的。如果您的用户是 chroot 用户(通常 FTP 用户就是这种情况),您应该使用相对路径(例如 ~/ 或 ~/web)。否则使用绝对路径。
exclude 行是可选的,它们在这里只是为了演示如何将文件排除在 sitecopy 维护之外。
您可以在其手册页上找到有关 sitecopy 配置的更多信息:
man sitecopy
4 首次使用
在您第一次使用 sitecopy 之前,您必须确定以下三种情况中的哪一种符合您的情况:
- 现有的远程站点和本地副本,两者同步。
- 现有的远程站点,没有本地副本。
- 新的远程站点,现有的本地副本。
4.1 现有的远程站点和本地副本,两者同步
如果远程站点和本地副本都存在并且同步,请运行
sitecopy --catchup example.com
使 sitecopy 认为本地站点与远程副本完全相同。将 example.com 替换为您在 .sitecopyrc 文件中使用的站点的名称。
:~$ sitecopy --catchup example.com
sitecopy: Catching up site `example.com' (on example.com in ~/web/)
sitecopy: All the files and and directories are marked as updated remotely.4.2 现有远程站点,无本地副本
如果您没有现有远程网站的本地副本,请运行
sitecopy --fetch example.com
首先,sitecopy 从远程服务器获取文件列表(将 example.com 替换为您在 .sitecopyrc 文件中使用的站点的名称):
:~$ sitecopy --fetch example.com
sitecopy: Fetching site `example.com' (on example.com in ~/web/)
File: error/503.html - size 1906
File: error/502.html - size 1881
File: error/500.html - size 1851
File: error/405.html - size 1810
File: error/404.html - size 1806
File: error/403.html - size 1809
File: error/401.html - size 1806
File: error/400.html - size 1792
File: stats/.htaccess - size 128
File: robots.txt - size 14
File: index.html - size 1861
File: favicon.ico - size 7358
File: .htaccess - size 26
Directory: error/
Directory: stats/
sitecopy: Fetch completed successfully.然后运行
sitecopy --synch example.com
从远程副本更新本地站点。
sitecopy: Synchronizing site `example.com' (on example.com in ~/web/)
Creating error/: done.
Creating stats/: done.
Downloading error/503.html: [.] done.
Downloading error/502.html: [.] done.
Downloading error/500.html: [.] done.
Downloading error/405.html: [.] done.
Downloading error/404.html: [.] done.
Downloading error/403.html: [.] done.
Downloading error/401.html: [.] done.
Downloading error/400.html: [.] done.
Downloading stats/.htaccess: [.] done.
Downloading robots.txt: [.] done.
Downloading index.html: [.] done.
Downloading favicon.ico: [.] done.
Downloading .htaccess: [.] done.
sitecopy: Synchronize completed successfully.4.3 新建远程站点,现有本地副本
如果本地副本存在,但您有一个空的远程站点,请运行
sitecopy --init example.com
首先初始化站点。将 example.com 替换为您在 .sitecopyrc 文件中使用的站点的名称。
:~$ sitecopy --init example.com
sitecopy: Initializing site `example.com' (on example.com in ~/web/)
sitecopy: All the files and directories are marked as NOT updated remotely.然后运行:
sitecopy --update example.com
将本地副本上传到远程站点:
:~$ sitecopy --update example.com
sitecopy: Updating site `example.com' (on example.com in ~/web/)
Creating stats/: done.
Creating data/: done.
Creating error/: done.
Uploading stats/.htaccess: [.] done.
Uploading data/index.html: [.] done.
Uploading error/403.html: [.] done.
Uploading error/401.html: [.] done.
Uploading error/404.html: [.] done.
Uploading error/503.html: [.] done.
Uploading error/400.html: [.] done.
Uploading error/502.html: [.] done.
Uploading error/405.html: [.] done.
Uploading error/500.html: [.] done.
Uploading index.html: [.] done.
Uploading robots.txt: [.] done.
Uploading .htaccess: [.] done.
Uploading favicon.ico: [.] done.
sitecopy: Update completed successfully.5 使用网站副本
之后,sitecopy 的使用就非常简单了。您可以使用本地副本以及更新、创建和删除文件。第一个但可选的步骤是运行
sitecopy example.com
找出本地更改了哪些文件(将 example.com 替换为您在 .sitecopyrc 文件中使用的站点的名称):
:~$ sitecopy example.com
sitecopy: Showing changes to site `example.com' (on example.com in ~/web/)
* These items have been added since the last update:
info.php
sitecopy: The remote site needs updating (1 item to update).要将您的远程网站与您的本地副本同步(即将新的和更改的文件上传到远程服务器并删除远程服务器上已在本地删除的文件),您只需运行
sitecopy --update example.com
:~$ sitecopy --update example.com
sitecopy: Updating site `example.com' (on example.com in ~/web/)
Uploading info.php: [] done.
sitecopy: Update completed successfully.就是这样!享受站点复制的乐趣!
6个链接
- 网站副本:http://www.manyfish.co.uk/sitecopy/
- Ubuntu:http://www.ubuntu.com/