linux怎么从另一个服务器拷贝文件夹?,有哪些方法

从另一个服务器拷贝文件夹,Linux下最常用也最可靠的方式是 scp -r,想要断点续传或增量同步就用 rsync -avz。 这两个命令覆盖了绝大多数场景,一个简单直接,一个功能强大,下面我把我日常处理服务器迁移、备份时实际用到的操作细节全部拆开讲,照着复制就能用。

linux服务器之间拷贝文件命令详解

先明确一个基础认知:Linux服务器之间传文件,本质上就是走 SSH 通道,无论是 scp 还是 rsync,底层都依赖 SSH 协议,这意味着你只要搞定了 SSH 登录,拷贝文件夹就是顺手的事。

linux之间的文件拷贝
加载中
linux之间的文件拷贝

拷贝前的三个准备工作

动手之前,先确认三件事,能帮你避开 80% 的坑:

  • 目标服务器的 IP 地址或域名。168.1.100 或 backup.example.com。
  • 登录账号和端口,默认端口是 22,如果改过端口,比如改成了 2222,命令里必须显式加 -P 2222(注意 scp 用的是大写 P,ssh 用小写 p,这个细节坑过不少人)。
  • SSH 免密登录是否已配置,没配置的话,每次拷贝都要输密码;配置了则脚本化操作更顺手。

行业共识认为,给服务器配置 SSH 密钥登录是提升效率的第一步,生成密钥很简单:

ssh-keygen -t rsa -b 4096

一路回车,然后把你本机的公钥推送到目标服务器:

ssh-copy-id -p 端口号 用户名@服务器IP

之后再用 scp 或 rsync,就不用反复输密码了。

scp命令的完整实操

scp 是 Secure Copy 的缩写,用法跟 cp 很像,只是路径变成了 用户名@主机:路径 的格式。

从远程服务器拉取文件夹到本地

比如我想把 168.1.100 上 /var/www/html 整个目录下载到当前机器的 /home/user/backup 下:

scp -r root@192.168.1.100:/var/www/html /home/user/backup
  • -r 参数表示递归复制整个目录,不加会报错。
  • 如果目标服务器 SSH 端口不是默认的 22,用 -P 指定:
scp -P 2222 -r root@192.168.1.100:/var/www/html /home/user/backup

将本地文件夹推送到远程服务器

反向操作,把本地的 ./build 目录推送到远程服务器的 /opt/www:

scp -r ./build root@192.168.1.100:/opt/www

注意:如果远程目录 /opt/www 已经存在,scp

linux怎么从另一个服务器拷贝文件夹?,有哪些方法

会把 build 文件夹放进 /opt/www 里面,变成 /opt/www/build直接合并到 /opt/www 下,需要自己先处理目录层级,这是 scp 不如 rsync 方便的地方。

保留文件属性

拷贝网站源码或配置文件时,文件权限和时间戳很重要,加上 -p 可以保留这些属性:

scp -rp root@192.168.1.100:/etc/nginx /home/user/nginx-backup

scp的局限在哪里

scp 简单归简单,但有两个明显的短板:

  • 不支持断点续传,传了一半网络断了,重新来过,大文件时非常痛苦。
  • 不做增量同步,每次都是全量复制,哪怕远程文件夹只改了一个 1KB 的小文件,也要把整个目录重新传一遍。

当文件夹体积较大(比如超过 1GB)或者需要频繁同步时,业界主流做法是改用 rsync。

linux跨服务器复制目录的rsync方案

rsync 是 Linux 服务器之间做文件同步的瑞士军刀,它厉害的地方在于增量传输只传送源目录和目标目录之间有差异的部分,节省时间也节省带宽。

rsync基础命令

把刚才 scp 的第一个场景用 rsync 重写一遍:

rsync -avz -e ssh root@192.168.1.100:/var/www/html /home/user/backup

参数拆解:

  • -a 归档模式,表示递归复制并保留权限、时间戳、软链接等属性。
  • -v 显示详细输出,方便观察进度。
  • -z 传输时压缩,对文本类文件(代码、配置文件)效果拔群。
  • -e ssh 指定使用 SSH 作为传输通道,这是跨服务器拷贝的标准姿势。

rsync的断点续传与增量同步

这是 rsync 碾压 scp 的核心技能,传输中断后,重新执行同一条命令,它会自动跳过已传完的部分,只传剩余数据:

rsync -avzP -e ssh root@192.168.1.100:/var/www/html /home/user/backup

-P 等价于 --partial --progress,--partial 表示保留部分传输的文件,--progress 显示实时进度百分比。

场景实操:网站日志同步

假设我有两台服务器,A 是 Web 服务器,B 是日志分析服务器,每天凌晨把 A 上的日志同步到 B:

rsync -avz -e ssh --remove-source-files root@A服务器IP:/var/log/nginx/ /data/logs/nginx/

--remove-source-files 表示传输成功后删除源端的文件,避免 A 服务器磁盘被日志撑爆,这个操作非常适合

linux怎么从另一个服务器拷贝文件夹?,有哪些方法

日志集中管理的场景。

权限保留与特殊文件处理

网站迁移时,文件属主和权限错乱是常见问题。rsync 的 -a 参数已经包含了权限保留,但如果你需要明确指定属主和属组,可以加:

rsync -avz --chown=www:www -e ssh root@192.168.1.100:/var/www/html /home/user/backup

--chown=www:www 把拷贝过来的文件属主强制设为 www 用户、www 组,这在部署 PHP 或 Node.js 项目时特别实用,能避免权限不足导致的 500 错误。

只排除不想要的目录

拷贝整个站点时,node_modules、runtime 这类体积大又没用的目录应该跳过,用 --exclude 参数:

rsync -avz -e ssh --exclude='node_modules' --exclude='.git' --exclude='runtime' root@192.168.1.100:/var/www/html /home/user/backup

多个排除项可以重复使用 --exclude,也可以写进一个文件里管理:

rsync -avz -e ssh --exclude-from=/home/user/exclude-list.txt root@192.168.1.100:/var/www/html /home/user/backup

exclude-list.txt 每行写一个目录名,

node_modules
.git
runtime
.log

scp与rsync怎么选:linux服务器之间传文件哪个快

很多新手纠结这个问题,明确一个结论:数据传输速度本身差别不大,真正的差距在传输策略。

对比项 scp rsync
首次全量传输 速度相当 速度相当
增量传输 不支持 支持,只传差异部分
断点续传 不支持 支持(--partial)
权限保留 需 -p 参数 -a 参数默认保留
压缩传输 需 -C 参数 -z 参数更灵活
排除目录 不支持 --exclude 支持
适用场景 小文件夹、一次性拷贝 大目录、持续同步、迁移

什么时候用 scp:

  • 文件夹很小(几百 MB 以内),一次性操作。
  • 不想记太多参数,命令行越短越好。
  • 目标机器 SSH 版本较老,rsync 可能没装。

什么时候用 rsync:

  • 文件夹超过 1GB,网络不稳定。
  • 需要定期同步(配合 cron 定时任务)。
  • 迁移网站、数据库文件目录,需要保留权限。
  • linux怎么从另一个服务器拷贝文件夹?,有哪些方法

  • 服务器之间传文件哪个快这个问题,增量场景下 rsync 明显更快,因为传的数据量小。

我给客户做服务器迁移时,默认方案就是 rsync -avzP,稳且可控,如果客户要求最简单省事,一次性的小目录才用 scp。

定时同步的配置思路

如果你需要每天凌晨自动同步,把 rsync 命令写进脚本,配合 crontab 即可:

crontab -e

加入一行(每天凌晨 2 点执行):

0 2    /usr/bin/rsync -avzP -e ssh root@192.168.1.100:/var/www/html /home/user/backup >> /var/log/rsync-backup.log 2>&1

业内专家指出,定时增量同步是服务器备份最省钱的方案,比任何云厂商的块存储快照都灵活。

跨服务器拷贝时遇到密码问题的处理

如果不想配置 SSH 免密,也可以考虑用 sshpass 在命令中直接指定密码,但安全性较差,不推荐在生产环境使用,从安全角度考虑,建议按以下优先级选择:

  1. SSH 密钥认证(推荐)。
  2. 使用 ssh-agent 管理密钥。
  3. 仅在受信任的内网环境使用 sshpass。

配置密钥时注意文件权限,~/.ssh 目录权限应为 700,authorized_keys 文件权限应为 600,否则 SSH 服务会拒绝使用密钥登录。

常见疑问解答

拷贝文件夹时遇到权限不足怎么办

scp 或 rsync 报 Permission denied,多数情况是目标目录的写权限不够,先确认当前登录用户对目标目录是否有写权限,或者直接切换到 root 用户执行:

sudo scp -r root@192.168.1.100:/var/www/html /home/user/backup

如果目标目录属于其他用户,可以先用 chown 调整属主。

传输中断后必须从头开始吗

scp 必须从头开始,因为协议不支持断点续传。rsync 加 -P 参数后,重新执行原命令即可从断点继续,已完成的部分不会重复传输,所以大文件传输建议一律使用 rsync。

如何确认拷贝后的文件完整性

rsync 传输完成后,可以对比源目录和目标目录的校验值:

diff -r root@192.168.1.100:/var/www/html /home/user/backup

或者用 rsync 自带的 -c 参数强制校验文件内容:

rsync -avzc -e ssh root@192.168.1.100:/var/www/html /home/user/backup

-c 会逐文件计算校验值,确保内容一致,代价是速度稍慢。

首发原创文章,作者:王坚‌,如若转载,请注明出处:https://test.idctop.com/article/555789.html

赞 (0)
勤哲Excel服务器需要什么编程语言?,需要学什么?
上一篇 2026年8月8日 03:03
DNF登不上一直连接服务器失败怎么办,怎么回事
下一篇 2026年8月8日 03:12

相关推荐

  • 魅族开发者设置在哪里?魅族手机如何打开开发者选项

    魅族手机的开发者设置选项默认处于隐藏状态,核心入口位于“设置”应用中的“关于手机”板块,通过连续点击“版本号”7次即可解锁,这一机制是Android系统为了防止普通用户误操作而设计的标准保护措施,解锁后,开发者选项会出现在“辅助功能”或“系统设置”的二级菜单中,对于开发者或高级用户而言,掌握这一入口的开启与配置……

    2026年3月8日
    23000
  • 常用的文献检索数据库和归档有何区别,如何选择

    文献检索数据库和归档类型是学术研究的两大支柱,前者负责信息的发现,后者负责信息的管理和长期保存,常用的文献检索数据库包括知网、PubMed、Web of Science等,而归档类型则主要分为预印本归档、机构知识库归档和个人文献管理归档,三者在审查标准、访问权限和保存目的上存在明显差异,常用的文献检索数据库有哪……

    2026年8月5日
    200
  • AI智能语音机器人销售好做吗?如何提升销售转化率

    AI智能语音机器人销售表现强劲,已成为企业降本增效、提升转化率的关键工具,尤其适合高频外呼、初筛意向及售后回访场景,但需配合人工跟进才能发挥最大价值,随着人工智能技术的迭代升级,语音交互的拟真度已达到前所未有的高度,过去那种机械感强、逻辑僵硬的“电音”机器人正在被淘汰,取而代之的是能够理解上下文、具备情感识别能……

    2026年6月7日
    4300
  • ASP.NET视图是什么?入门教程详解

    ASP.NET视图是ASP.NET框架中用于构建和渲染用户界面的核心组件,它允许开发者通过代码动态生成HTML内容,实现网页的交互性和动态性,在ASP.NET MVC架构中,视图负责展示数据,与控制器和模型分离,确保代码的可维护性和可扩展性,通过使用Razor语法或Web Forms引擎,开发者能高效创建响应式……

    2026年2月10日
    12530
  • 服务器2008STAndard是什么版本,服务器2008标准版功能特点详解

    Windows Server 2008 Standard 作为微软服务器操作系统发展史上的经典版本,至今仍在部分企业的特定业务场景中发挥着关键作用,其核心价值在于极高的系统稳定性、对传统应用软件的完美兼容性以及经过长期验证的安全架构,尽管微软官方已经停止了主流支持和扩展支持,但对于许多不愿或无需进行大规模IT架……

    2026年4月6日
    7700
  • AIoT未来市场在哪里?AIoT行业发展前景如何

    AIoT未来市场的核心在于从单纯的“万物互联”向“万物智联”深度跃迁,市场增长点将不再局限于硬件设备的规模化出货,而是转向以场景化应用、边缘计算能力及数据价值挖掘为核心的垂直行业解决方案,未来的市场红利,将属于那些能够打通数据孤岛、实现端侧智能决策、并在工业制造、智慧城市、智慧康养等细分领域落地实际业务闭环的企……

    2026年3月13日
    13300
  • MyEclipse怎么开发Java?MyEclipse开发Java详细步骤

    MyEclipse作为Java集成开发环境的经典工具,其核心价值在于将复杂的代码编写、调试与部署流程高度集成化,极大提升了开发效率,对于开发者而言,掌握MyEclipse不仅是掌握一个工具,更是掌握标准化的企业级Java开发流程,使用MyEclipse开发Java项目,能够显著降低环境配置成本,通过可视化的操作……

    2026年4月3日
    8100
  • 2026有哪些值得参加的iOS开发者大会?苹果WWDC领衔推荐

    iOS开发者大会是苹果公司每年举办的全球开发者盛会,官方名称为WWDC(Worldwide Developers Conference),它为iOS开发者提供前沿技术更新、工具发布和社区交流平台,通过参与此类大会,开发者能加速技能提升,优化应用开发流程,并融入苹果生态系统,什么是iOS开发者大会的核心价值iOS……

    2026年2月8日
    22010
  • web前端开发pdf哪里下载?web前端开发pdf电子书免费下载

    Web前端开发的学习路径已经从碎片化的博客阅读转向系统化的文档沉淀,掌握核心知识体系是提升开发效率的唯一途径,PDF格式文档因其跨平台兼容性、排版固定性以及易于检索的特性,成为了前端开发者查阅API文档、学习框架原理以及备战面试的首选载体, 对于开发者而言,构建一套属于自己的、结构清晰的“Web前端开发 PDF……

    2026年4月3日
    8800
  • 什么是TDD测试驱动开发,TDD开发流程怎么写?

    测试驱动开发是现代软件工程中提升代码质量和开发效率的核心方法论,它不仅仅是一种测试技术,更是一种设计哲学,要求开发者先编写测试代码,再编写能够通过测试的生产代码,这种“反向”的思维方式,能够从根本上解决代码耦合度过高、逻辑混乱以及后期维护成本高昂的问题,是构建高健壮性系统的必经之路,红-绿-重构:核心开发循环掌……

    2026年2月26日
    16400

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注