智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

linux之间传文件命令之Rsync傻瓜式教程

1. 前言

linux之间传文件命令用什么命令?本文介绍一种最常用,也是功能强大的文件同步和传输工具Rsync,本文提供详细傻瓜式教程。

在本教程中,我们将通过实际使用案例和最常见的rsync选项的详细说明向您展示如何使用rsync。

本教程适用于Ubuntu系统、Linux Mint系统、Deepin深度Linux系统、Fedora系统、Debian系统、Elementary OS系统、OpenSUSE系统、CentOS系统、RHEL系统,Arch Linux等等GNU Linux发行版。

linux之间传文件命令之Rsync傻瓜式教程

2. rsync介绍

Rsync是一个快速且通用的命令行实用程序,它可以使Windows与Linux之间,Linux与Linux之间传文件或者Linux与MAC OS之间传文件。或从Linux本地文件系统到远程Rsync守护进程之间同步文件和文件夹。它只传输源和目标之间的差异,从而提供快速增量文件传输。

Rsync可以用于镜像数据、增量备份、在Linux系统之间传文件,也可以用于Linux与Windows之间传输文件,还可以替代日常使用的scp、sftp和cp命令,他们一般也用于Linux之间传文件或者Linux与MAC OS之间传文件。

scp使用教程:
Linux之间传输文件之ssh利用加密隧道

3. 如何安装Rsync

rsync实用程序预装在大多数Linux发行版和macOS上。你可以输入以下命令,检查你的系统是否已安装:

rsync --version

查看Rsync版本的输出结果:

rsync  version 3.1.2  protocol version 31
Copyright (C) 1996-2015 by Andrew Tridgell, Wayne Davison, and others.
Capabilities:
    64-bit files, 64-bit inums, 64-bit timestamps, 64-bit long ints,
    socketpairs, hardlinks, symlinks, IPv6, batchfiles, inplace,
    append, ACLs, xattrs, iconv, symtimes, prealloc

rsync comes with ABSOLUTELY NO WARRANTY.  This is free software, and you
are welcome to redistribute it under certain conditions.  See the GNU
General Public Licence for details.

如果您的系统上没有安装rsync,您可以使用发行版的包管理器轻松地安装它。

在Ubuntu 或者Debian体系的Linux系统上安装rsync

sudo apt install rsync

在CentOS 或者Fedora系统上安装rsync

sudo yum install rsync

4. Rsync命令使用语法

在讨论如何使用rsync命令之前,让我们先回顾一下基本语法。

rsync实用程序表达式采用以下形式:

Local to Local:  rsync [OPTION]... [SRC]... DEST
Local to Remote: rsync [OPTION]... [SRC]... [USER@]HOST:DEST
Remote to Local: rsync [OPTION]... [USER@]HOST:SRC... [DEST]
  • OPTION – rsync参数选项.
  • SRC – 源目录.
  • DEST – 目标目录.
  • USER – 远程用户名.
  • HOST – 远程主机名或域名或IP地址.

rsync提供了许多选项来控制其行为和功能。最广泛使用的选项是:

-a, --archive, 归档模式, 相当于 -rlptgoD。这个选项告诉rsync递归地同步目录、传输特殊设备和块设备、保存符号链接、修改时间、组、所有权和权限。

-z, --compress. 这个选项将强制rsync在传送文件到目标计算机时压缩数据。仅当到远程计算机的连接很慢时才使用此选项。

-P, 相当于--partial --progress。使用此选项时,rsync将在传输期间显示一个进度条,并保留部分传输的文件。当通过缓慢或不稳定的网络连接传输大文件时,它非常有用。

--delete. 使用此选项时,rsync将从目标位置删除无关文件。它对镜像很有用。

-q, --quiet。如果希望禁用非错误消息,请使用此选项。

-e. 此选项允许您选择不同的远程shell。默认情况下,rsync被配置为使用ssh。

5. 使用Rsync最基本的功能使Linux之间传输文件

要将一个文件从一个本地位置复制到另一个本地位置,可以运行以下命令:

rsync -a /opt/filename.zip /tmp/

使用Rsync最基本的功能使Linux之间传输文件

运行该命令的用户必须具有目标位置上的读权限和目标上的写权限。

从目标位置省略文件名将复制具有当前名称的文件。如果您想将文件保存在另一个名称下,请在目标部件上指定新名称:

比如复制filename.zip到目标目录并重新把文件名修改为newfilename.zip

rsync -a /opt/filename.zip /tmp/newfilename.zip

在下面的例子中,我们正在创建一个本地备份我们的网站文件:

rsync -a /var/www/domain.com/public_html/ /var/www/domain.com/public_html_backup/

如果目标目录不存在,rsync将创建它。

值得一提的是,rsync对后面带有斜杠/的源目录提供了不同的处理。如果在源目录上添加一个尾随斜杠,它将只将目录的内容复制到目标目录。当后面的斜杠被省略时,rsync将把源目录复制到目标目录中。

6. 如何使用Rsync与远程服务器同步文件(包括上传下载)

当使用rsync进行远程传输时,必须同时安装在源机器和目标机器上。rsync的新版本被配置为使用SSH作为默认远程shell。

如何使用Rsync与远程服务器同步文件(包括上传下载)

在下面的例子中,我们将一个目录从本地转移到远程机器:

rsync -a /opt/media/ remote_user@remote_host_or_ip:/opt/media/

如果您还没有为远程机器设置无密码SSH登录,将要求您输入用户密码。

如果你需要配置2台Linux之间免密码登录,请查看以下教程:

如果你想把数据从远程传输到本地机器,你需要使用远程位置作为一个源:

2台Linux之间如何免密码互相登录?请看以下教程
ssh免密码登录

rsync -a remote_user@remote_host_or_ip:/opt/media/ /opt/media/

如果远程主机上的SSH监听的端口不是默认的22端口,那么可以使用-e选项指定端口:
比如远程服务器的SSH端口被修改为1234

rsync -a -e "ssh -p 1234" /opt/media/ remote_user@remote_host_or_ip:/opt/media/

当传输大量数据时,建议在屏幕会话中运行rsync命令或使用-P选项:

rsync -a -P remote_user@remote_host_or_ip:/opt/media/ /opt/media/

7. 使用Rsync传送或同步文件时,排除某些文件或者目录

当使用Rsync排除文件或目录时,需要使用它们到源位置的相对路径。

使用Rsync传送或同步文件时,排除某些文件或者目录

有两个选项可以排除文件和目录。第一个选项是使用--exclude参数,并在命令行中指定要排除的文件和目录。

这里有一个专门的教程讲解如何使用Rsync传送或同步文件时,排除某些文件或者目录:
Rsync同步文件时如何排除指定文件夹或多个目录

在下面的例子中,我们排除了位于src_directory中的123abc目录:

rsync -a --exclude=123 --exclude=abc /src_directory/ /dst_directory/

第二个选项是使用--exclude-from参数,并指定要在文件中排除的文件和目录。

rsync -a --exclude-from='/exclude-file.txt' /src_directory/ /dst_directory/

vi exclude-file.txt
加入需要排除的文件,比如文件file1.c,目录zcwyou:

file1.c
zcwyou

8. 总结

在本教程中,您学习了如何使用Rsync在多台Linux之间传输、复制或同步文件和目录。在Rsync用户手册页面上有更多关于Rsync的内容。

如果你有任何问题,请留下你的意见。

赞(1)
未经允许不得转载:Linux入门学习到精通 » linux之间传文件命令之Rsync傻瓜式教程
分享到: 更多 (0)

学习QQ群:557371664

关注微信公众号自助视频学习

评论 抢沙发

评论前必须登录!