中乐九建
中乐九建
发布于 2025-01-03 / 32 阅读
0

lsyncd文件同步 rsync liunx server文件传输 scp文件备份

在liunx server系统中 如何快速的 将一个文件夹及文件 快速的传输到另外一台liunx server服务器中

必须实现 免密码登录另外一台服务器。且账号有权限。

当然,关于上述第4步“正确的用户认证信息”,在一个a服务器和一个b服务器之间的操作,可以详细解释如下:

使用密码认证

1. 在a服务器上:

• 使用SCP命令时,需要指定b服务器的用户名(假设为user_b)和IP地址(假设为b_server_ip),以及要复制的源文件和目标路径。

• 命令格式如下:scp /path/to/source_file user_b@b_server_ip:/path/to/destination

• 当执行此命令时,系统会提示输入user_b在b服务器上的密码。

2. 在b服务器上:

• 确保user_b账户存在,并且该账户在指定的目标路径下有写入权限。

• 不需要在b服务器上执行任何特定操作来接收文件,只需确保SSH服务正在运行,并且防火墙允许从a服务器的IP地址到b服务器的SSH端口的流量。

使用密钥认证

1. 在a服务器上生成密钥对:

• 使用ssh-keygen命令生成SSH密钥对。这将生成一个私钥文件(默认为~/.ssh/id_rsa)和一个公钥文件(默认为~/.ssh/id_rsa.pub)。

• 命令格式如下:ssh-keygen -t rsa(可以按回车接受默认设置)。

2. 将a服务器的公钥复制到b服务器:

• 使用ssh-copy-id命令将a服务器的公钥复制到b服务器的~/.ssh/authorized_keys文件中。

• 命令格式如下:ssh-copy-id user_b@b_server_ip

• 当执行此命令时,系统会提示输入user_b在b服务器上的密码。成功输入后,公钥将被添加到~/.ssh/authorized_keys文件中。

3. 在a服务器上使用SCP命令:

• 现在,可以使用SCP命令将文件从a服务器复制到b服务器,而无需输入密码。

• 命令格式与上面使用密码认证时相同:scp /path/to/source_file user_b@b_server_ip:/path/to/destination

4. 在b服务器上:

• 确保user_b账户存在,并且该账户在指定的目标路径下有写入权限。

• 不需要在b服务器上执行任何特定操作来接收文件(除了之前提到的确保SSH服务和防火墙设置正确)。

通过以上步骤,你可以使用密钥认证的方式在a服务器和b服务器之间安全地复制文件,而无需在每次传输时输入密码。这提高了传输过程的安全性和效率。

scp -r /kaobei zljj@192.168.10.235:/home/zljj/some_directory

(Secure Copy)命令

SCP是基于SSH协议进行安全加密的文件传输工具,使用SSH连接进行文件传输,因此具有与SSH相同的安全性。

  • 基本语法scp [选项] [[用户@]源主机:]源文件路径 [[用户@]目标主机:]目标文件路径

  • 示例:假设要从本地服务器(IP地址为192.168.1.100)将名为“test”的文件夹传输到远程服务器(IP地址为192.168.1.200)的root用户家目录下,并保留源文件夹的属性,使用2222端口号进行SSH连接,可以使用以下命令:

scp -r -p -P 2222 test root@192.168.1.200:~

  • 常用选项

    • -r:递归地复制整个目录及其子目录和文件。

    • -p:保留源文件或目录的属性(如修改时间、访问权限等)。

    • -P:指定SSH连接的端口号(默认为22)。

    • -v:显示详细的输出信息。

二、使用RSYNC命令

RSYNC是一个非常快速且灵活的文件传输工具,它可以在本地和远程之间同步文件和目录,且只传输变化的部分,从而节省带宽和空间。

  • 基本语法rsync [选项] 源文件或目录 目标位置

  • 示例:假设要从本地服务器(IP地址为192.168.1.100)将名为“test”的文件夹同步到远程服务器(IP地址为192.168.1.200)的root用户家目录下,使用2222端口号进行SSH连接,并显示进度信息,可以使用以下命令:

rsync -azv -e "ssh -p 2222" test root@192.168.1.200:~

  • 常用选项

    • -a:归档模式,相当于-rlptgoD,即递归地同步整个目录及其子目录和文件,并保留源文件或目录的属性。

    • -z:压缩模式,可以减少传输的数据量。

    • -v:显示详细的输出信息。

    • -e:指定SSH连接的参数,如端口号、密钥文件等。

    • -P:显示进度信息,并且支持断点续传。

在Ubuntu Server下,可以通过APT(Advanced Package Tool)轻松安装rsync,并利用它进行高效的文件同步和备份。以下是对rsync在Ubuntu Server下的安装、使用以及常用命令的详细解释:

一、安装rsync

在Ubuntu Server上,使用APT安装rsync非常简单。只需打开终端,并输入以下命令:

bash复制代码

sudo apt-get update

sudo apt-get install rsync

这将更新软件包列表并安装rsync。安装完成后,可以通过rsync --version命令检查rsync的版本,以确保安装成功。

二、rsync的基本使用

rsync支持本地和远程文件同步,以下是一些基本的使用方法和常用命令:

  1. 本地文件同步

    rsync可以将本地文件或目录同步到另一个本地目录。例如,将/path/to/source目录同步到/path/to/destination目录,可以使用以下命令:

    bash复制代码

    rsync -avz /path/to/source/ /path/to/destination/

    其中,-a表示归档模式,会递归复制目录并保持文件属性;-v表示详细输出,显示同步过程中的详细信息;-z表示压缩文件数据在传输过程中,以节省带宽。

  2. 远程文件同步

    rsync还支持通过SSH协议进行远程文件同步。例如,将本地文件同步到远程服务器上的指定目录,可以使用以下命令:

    bash复制代码

    rsync -avz -e ssh /path/to/local/file username@remote_host:/path/to/remote/directory/

    其中,-e ssh表示使用SSH作为传输方式;username@remote_host表示远程服务器的用户名和地址;/path/to/local/file是本地文件的路径;/path/to/remote/directory/是远程目录的路径。

    同样地,也可以从远程服务器拉取文件到本地,只需将源路径和目标路径互换即可。

三、rsync的常用命令和选项

rsync提供了许多选项来定制同步过程。以下是一些常用的选项:

  • --delete:删除目标目录中源目录中不存在的文件。

  • --exclude:排除不需要同步的文件或目录。例如,--exclude 'dir_to_exclude'将排除名为dir_to_exclude的目录。

  • --progress:显示同步进度信息,包括传输的文件数量和速度等。

  • --checksum:根据文件的校验和来决定是否需要传输文件,而不是仅根据文件大小和时间戳。

  • --partial:保留因中断而未能完全传输的文件,以便在后续同步中继续传输。

  • --backup:在同步过程中创建备份文件,以防止数据丢失。可以使用--backup-dir选项指定备份文件的存储目录。

四、配置rsync守护进程

为了更方便地进行远程文件同步,可以配置rsync守护进程。以下是配置步骤:

  1. 复制配置文件

    bash复制代码

    sudo cp /usr/share/doc/rsync/examples/rsyncd.conf /etc/

  2. 编辑配置文件

    使用文本编辑器(如vim)打开/etc/rsyncd.conf文件,并根据需要进行编辑。配置文件中的选项包括全局选项和模块选项。全局选项适用于所有模块,而模块选项则针对特定的同步模块。

  3. 设置认证信息

    在配置文件中指定认证用户和密码。然后,在/etc/rsyncd.secrets文件中存储用户名和密码(中间用冒号分隔)。确保该文件具有适当的权限(如600),以防止未经授权的访问。

  4. 启动rsync守护进程

    使用以下命令启动rsync守护进程:

    bash复制代码

    sudo systemctl start rsync

    可以使用sudo systemctl status rsync命令检查rsync守护进程的状态。

  5. 测试同步

    在客户端上,编辑密码文件(如/etc/rsync.backup.passwd),并确保该文件具有适当的权限(如600)。然后,使用rsync命令进行同步测试。

通过以上步骤,您可以在Ubuntu Server上成功安装、配置和使用rsync进行文件同步和备份。rsync的强大功能和灵活性使其成为Linux系统下不可或缺的工具之一。

在ubuntu server 下 apt lsyncd 安装与使用

  1. 配置文件权限:确保lsyncd的配置文件(如/etc/lsyncd/lsyncd.conf.lua)具有适当的权限,以便lsyncd服务可以读取它。通常,这意味着配置文件应该由root用户拥有,并且权限应该设置为644或更严格。

  2. 同步目录权限:确保lsyncd有权访问源目录和目标目录。这可能需要调整这些目录的权限或所有权,以便lsyncd服务可以读取和写入它们。

  3. SSH访问权限(如果使用rsyncssh模式):如果配置lsyncd使用rsyncssh模式进行远程同步,则需要确保lsyncd服务有权通过SSH访问远程主机。这通常涉及设置SSH密钥认证,并确保远程主机的SSH服务正在运行。

settings {
    logfile    = "/var/log/lsyncd/lsyncd.log",
    statusFile = "/var/log/lsyncd/lsyncd.status",
    statusInterval = 20,
    inotifyMode = "*",                        -- 指定inotify监控所有事件类型
    maxProcesses = 10                         -- 指定同步时进程的最大个数
}

sync {
    default.rsyncssh,
    source = "/kaobei",
    target = "zljj@192.168.10.235:/home/zljj/kaobei",
    delay = 15, -- 设置延迟时间(秒),在检测到变化后等待一段时间再执行同步,默认是空闲时间达到这个值时同步。
    maxDelay = 60, -- 设置最大延迟时间(秒),即使有新的变化,也不会频繁触发同步任务,至少间隔这么长时间才再次同步。
    rsync = {
        archive = true,
        compress = true,
        owner = true,
        perms = true,
        _extra = {"--bwlimit=800", "--timeout=60"}
    },
    onStartup = true, -- 在 Lsyncd 启动时检查并同步任何现有的差异。
    onCreate = function()
        print("New file or directory created")
    end, -- 当创建新文件或目录时调用的 Lua 函数。
    onModify = function()
        print("File modified")
    end, -- 当文件被修改时调用的 Lua 函数。
    onDelete = function()
        print("File or directory deleted")
    end, -- 当删除文件或目录时调用的 Lua 函数。
    onMove = function()
        print("File or directory moved")
    end, -- 当移动文件或目录时调用的 Lua 函数。
}

三、使用SFTP(SSH File Transfer Protocol)

SFTP也是一个基于SSH的文件传输协议,它提供了一个安全的、加密的文件传输环境,并提供了一个交互式的文件传输界面。

  • 基本步骤

    1. 通过SSH连接到远程服务器:sftp user@remote_host

    2. 使用类似于FTP的命令进行文件传输,如put(上传文件)、get(下载文件)等。