Rsync 是一个古老的 Linux 应用,用于同步文件,可以用来在本地计算机和远程服务器之间同步文件。相对于FTP,Rsync 的最大特点就是同步,使用时,Rsync 会检查发送端和接收端的已有文件,仅传输有修改的文件,正是因为这个特性,Rsync 的效率要比 FTP 高很多。
一般情况下,只要服务器支持 SSH,就已经支持了 Rsync,这也就意味着大多数 Linux 服务器都可以使用 Rsync,只需要稍做配置,我们就可以使用 Rsync 「上传」文件到我们的服务器了。
Rsync 同步文件配置
如果用于上传文件,我们一般使用下面的命令。
rsync -avz --delete /path/to/local/directory/ user@host:/path/to/remote/folder/
第一个路径是源路径,第二个是目的路径,如果目的不存在,执行上面的命令后,Rsync服务端会自动创建。如果第一个是远程路径,第二个是本机路径,则相当于 FTP 的下载文件。如果两个都是本机路径,则相当于复制文件。
注意:如果源路径后面不加斜杠,源目录中会作为子目录被复制到目的路径中。
-a
存档模式,保存所有的元数据,比如修改时间(modification time)、权限、所有者等。-v
在传输时显示详情-z
在传输时压缩文件,发送的数据量更小,对性能稍有影响--delete
在目标位置删除本地目录中没有的文件,慎用,以免删除用户生成的文件
排除不需要同步的文件
如果本地目录中的某些文件不需要上传到服务器上,我们可以使用 –exclude 参数排除这些文件。如下命令中,我们排除了 .git 、node_modules 和 wp-content/uploads 这三个目录。
rsync -avz --delete \
--exclude=.git* \
--exclude=node_modules/ \
--exclude=/wp-content/uploads/ \
/path/to/local/wordpress/ user@host:/path/to/remote/wordpress/
如果需要排除的文件比较多,上面的命令可能会变得比较长,我们可以把需要排除的路径写到一个文件中,如 rsync-excludes.txt
,然后改用上面的命令来同步文件。
rsync -avz --delete --exclude-from=rsync-excludes.txt /path/to/local/wordpress/ user@host:/path/to/remote/wordpress/
rsync-excludes.txt 实例
.git*
node_modules
/wp-content/uploads/
/wp-content/upgrade/
/wp-content/debug.log
/wp-content/advanced-cache.php
/wp-content/object-cache.php
上面文件中前面的斜杠是相对于需要同步文件夹的根目录,而不是计算机的根目录,如果省略前面的斜杠,Rsync 将在所有子目录中排除这些目录或文件。
看起来有点麻烦,但是你值得拥有
相对于粗暴的 FTP,虽然上面的一通操作看起来有点麻烦,但是一旦我们熟练使用之后,就会大幅提高文件上传的效率,特别是在网络较慢的时候。并且,本文只介绍了 Rsync 的一个简单的使用方法,通过结合不同的parameters,我们可以实现各种个样的文件同步需求。
1 thoughts on “别再使用FTP了,试试使用 Rsync 工具上传代码到服务器”
这个可以当个参考,不熟悉的人还是用FTP更方便