赞
踩
当从文件服务器A复制文件到文件服务器B时,如果关闭防火墙时复制成功,而开启防火墙后复制失败,这通常是因为防火墙阻止了FTP连接。VSFTPD(Very Secure FTP Daemon)使用FTP协议进行文件传输,该协议默认使用TCP端口21进行控制连接,并可能使用其他动态端口进行数据传输。
iptables -A INPUT -p tcp --dport 49152:65535 -j ACCEPT
firewall-cmd
命令来设置永久规则:firewall-cmd --permanent --add-port=49152-65535/tcp
firewall-cmd --reload
/etc/vsftpd/vsftpd.conf
文件中的设置是否允许被动模式,并指定了正确的端口范围。例如:pasv_enable=YES
pasv_min_port=49152
pasv_max_port=65535
rsync
命令配合SSH进行同步,这种方法既高效又安全。请根据实际情况调整上述建议。如果有具体的操作系统版本或者详细的VSFTPD配置信息,我可以提供更加具体的帮助。
使用rsync
命令可以在服务器A和服务器B之间同步文件。rsync
是一个非常强大的工具,它不仅可以用于本地文件系统的备份和同步,还可以通过网络在不同的主机间同步文件。下面是如何使用rsync
进行服务器间的文件同步。
假设您想要从服务器A (serverA.example.com
) 同步 /path/to/directory
到服务器B (serverB.example.com
) 的 /destination/path
。
在服务器A上执行命令,将文件同步到服务器B。这里我们使用SSH作为传输方式。
rsync -avz --progress /path/to/directory user@serverB.example.com:/destination/path
当你需要从服务器A复制文件到服务器B,并且服务器B监听的是非标准端口(如9999)时,你可以通过指定 -e
选项来使用 ssh
并告诉 rsync
使用特定的端口进行连接。
假设服务器A和服务器B都有 SSH 服务,并且你有权限访问这些服务器。下面是如何使用 rsync
从服务器A复制文件到服务器B,并指定服务器B的 SSH 端口为 9999 的命令示例:
rsync -avz -e "ssh -p 9999" userA@serverA:/path/to/source/directory/ userB@serverB:/path/to/destination/directory/
这里解释一下各个选项:
-a
表示归档模式,它保留符号链接、文件权限、属组、用户和其他属性。-v
表示详细输出,在同步过程中显示更多的信息。-z
表示启用压缩,这可以加快传输速度,尤其是在传输大量小文件时。-e
指定使用 ssh
命令作为传输程序。--progress
显示同步进度条。"ssh -p 9999"
指定使用端口 9999 连接到远程主机。userA@serverA:
是源服务器的地址和登录用户名。/path/to/source/directory/
是要从服务器A复制的目录路径。userB@serverB:
是目标服务器的地址和登录用户名。/path/to/destination/directory/
是要复制到的目标目录路径。为了简化每次同步操作,您可能希望配置SSH无密码登录。这可以通过生成SSH密钥并在两台服务器之间交换公钥来实现。
在服务器A上生成SSH密钥:
ssh-keygen -t rsa -b 4096 -C "your_email@example.com"
接受所有默认设置,不要输入密码。
将公钥复制到服务器B:
ssh-copy-id user@serverB.example.com
这将会把您的公钥添加到服务器B的~user/.ssh/authorized_keys
文件中。
一旦配置好无密码登录,您可以直接使用rsync
命令而无需每次输入密码。
rsync -avz --progress /path/to/directory user@serverB.example.com:/destination/path
排除某些文件或目录:
rsync -avz --progress --exclude 'dir_to_exclude' /path/to/directory user@serverB.example.com:/destination/path
举例:如果你想要在复制文件的同时跳过某些文件或目录,你可以使用 --exclude
选项。例如,如果你想排除 .tmp
和 .log
目录,可以这样添加到命令中:
rsync -avz -e "ssh -p 9999" --exclude='.tmp' --exclude='.log' userA@serverA:/path/to/source/directory/ userB@serverB:/path/to/destination/directory/
增量更新:
如果您想在已经同步过的文件夹上进行增量更新,rsync
会自动检测文件变化并只传输差异部分。
如果您需要定期同步文件,可以使用cron
任务来自动化这一过程。
crontab -e
0 2 * * * rsync -avz --progress /path/to/directory user@serverB.example.com:/destination/path
user
具有足够的权限来写入目标目录。cron
之前。通过以上步骤,您可以实现在服务器A和服务器B之间的文件同步。如果需要进一步的帮助或遇到任何问题,请随时告诉我。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。