Linux中复制文件夹需按场景选命令:本地用cp -r;远程传输可用scp -r、rsync -avz(支持增量/断点)、sftp交互式操作,或tar+ssh管道压缩传输。

如果您需要在 Linux 系统中复制本地文件夹,或在不同主机之间传输整个目录,需根据场景选择对应命令。以下是实现该目标的具体操作步骤:
一、使用 cp 命令复制本地文件夹
cp 命令用于在同一台 Linux 主机内复制文件和目录,复制文件夹必须启用递归选项以包含子目录及其中所有内容。
1、打开终端,输入以下命令格式:cp -r 源文件夹路径 目标路径
2、例如将 /home/user/docs 复制到 /backup/ 目录下:cp -r /home/user/docs /backup/
3、若目标路径已存在同名文件夹,新内容将被合并进入;如需覆盖前提示确认,添加 -i 参数。
二、使用 scp 命令进行远程拷贝(基于 SSH)
scp 是基于 SSH 协议的安全远程文件复制工具,适用于 Linux 与 Linux 或 Linux 与 macOS 主机之间的文件夹传输。
1、从本地复制文件夹到远程主机:scp -r /本地/路径/ 用户名@远程IP:/远程/路径/
2、例如将本地 /data/project 发送到远程服务器 192.168.1.100 的 /home/admin/ 下:scp -r /data/project admin@192.168.1.100:/home/admin/
3、从远程主机复制文件夹到本地:scp -r 用户名@远程IP:/远程/路径/ /本地/路径/
三、使用 rsync 命令进行高效远程同步
rsync 支持增量传输、断点续传和压缩,比 scp 更适合大目录或网络不稳定环境下的远程拷贝。
1、基本远程拷贝语法:rsync -avz 源路径 用户名@远程IP:目标路径
2、例如同步本地 /var/log/ 到远程主机的 /backup/logs/:rsync -avz /var/log/ admin@192.168.1.100:/backup/logs/
3、若需保留权限、属主和时间戳,确保使用 -a 参数;添加 -P 可显示进度并支持断点续传。
四、使用 sftp 进行交互式远程文件夹传输
sftp 提供类 FTP 的交互界面,适合不熟悉命令行参数但需手动选择文件夹的操作场景,底层仍基于 SSH 加密。
1、连接远程服务器:sftp 用户名@远程IP
2、登录成功后,使用 put -r 本地文件夹路径 将本地目录上传至当前远程工作目录
3、使用 get -r 远程文件夹路径 将远程目录下载到当前本地工作目录
五、使用 tar + ssh 组合实现管道式压缩传输
该方法先在源端打包并压缩目录,再通过 SSH 管道直接解压到目标位置,避免生成中间文件,节省磁盘空间。
1、从本地打包并发送到远程主机并自动解压:tar -czf - /本地/文件夹/ | ssh 用户名@远程IP "tar -xzf - -C /远程/目标/路径/"
2、从远程主机拉取并解压到本地:ssh 用户名@远程IP "tar -czf - /远程/文件夹/" | tar -xzf - -C /本地/目标/路径/
3、注意:-C 参数指定解压根目录,末尾斜杠不影响行为,但路径必须存在且有写入权限。










