📌  相关文章
📜  从本地同步文件夹到服务器 - Shell-Bash (1)

📅  最后修改于: 2023-12-03 14:49:25.947000             🧑  作者: Mango

从本地同步文件夹到服务器 - Shell-Bash

在服务器上进行文件操作是非常常见的一件事情。而服务器和本地机器之间同步文件的需求也是时常出现的。本文将介绍使用Shell-Bash实现将本地文件夹同步到服务器的方法。

前置条件

在开始操作之前,确保以下条件已满足:

  1. 本地机器和服务器已经通过SSH建立连接。
  2. 在服务器上设定好同步文件夹的位置。
使用rsync命令

rsync是一款用于在本地和远程系统之间同步数据的工具,它可以实现文件夹内文件的增量同步,只同步内容上的修改,可以避免重复同步。

安装rsync

如果系统没有安装rsync,需要通过以下命令进行安装:

sudo apt-get install rsync # Ubuntu/Debian

sudo yum install rsync # CentOS/Fedora/RHEL
使用rsync同步文件夹

以下是使用rsync同步文件夹的语法:

rsync [OPTIONS] source destination

source和destination的格式为user@host:/path/to/folder,其中user和host表示目标服务器的用户名和IP地址或域名,/path/to/folder为目标文件夹的路径名。

以下是实现同步的命令实例:

rsync -avz /local/folder/ user@host:/remote/folder/

其中,-a选项表示采用归档模式,-v选项表示详细模式,-z选项表示数据传输时开启压缩模式。

增量同步

rsync有一项独特的功能——增量同步。在同步过程中,rsync会检查目标文件夹是否存在与源文件夹不同的文件,只同步不同的文件。

添加--delete选项可以在目标文件夹中删除源文件夹中不再存在的文件,确保同步后两个文件夹完全一致。

以下是实现增量同步的命令示例:

rsync -avz --delete /local/folder/ user@host:/remote/folder/
指定SSH端口

如果SSH连接的端口不是默认的22号端口,可以通过-p选项指定端口号。

例:

rsync -avz -e "ssh -p 2222" /local/folder/ user@host:/remote/folder/
避免重复同步

避免重复同步可以通过添加--exclude选项指定不同步的文件或文件夹;或通过--ignore-existing选项,只同步目标文件夹中没有的文件。

以下是实现避免重复同步的命令示例:

rsync -avz --exclude '*.log' /local/folder/ user@host:/remote/folder/
rsync -avz --ignore-existing /local/folder/ user@host:/remote/folder/
总结

本文介绍了使用rsync命令将本地文件夹同步到服务器的方法,通过该方法可以实现文件夹内文件的增量同步,只同步内容上的修改,避免重复同步。同时也介绍了在实现同步时可能用到的一些选项及技巧。

参考文献
  1. rsync - Wikipedia
  2. rsync简介及使用详解