Linux系统之间拷贝文件的技巧总结

日常工作中需要经常从远程或本地服务器拷贝/移动大量文件。遇到文件比较多比较散的时候速度较慢,所以在想有没有较快的方式。经过搜罗、整理、验证,大概有以下几种。

首先,无论本地还是远程,需要移动或拷贝的文件较多且都不太大时,用cp命令和mv命令效率较低,可以先使用tar工具对将要拷贝/移动的内容进行打包/压缩,之后再进行拷贝/移动,最后再解包/解压缩。

另外,也是很关键的一个技巧,即,不必在tar打包/压缩完毕之后再进行拷贝,解包/解压缩,可以通过管道一边打包/压缩另一边执行拷贝解包/解压缩。

比如,tar命令可以和nc命令结合可以快速在两台机器之间传输文件和目录:

B机器:

nc -l 5555 |tar -C /tmp/test/ -xf -

A机器:

tar cf - /tmp/test/ |nc B‘IP 5555

上述步骤将A机器/tmp/test/下的内容拷贝到B机器对应的目录中,其中tar cf - /tmp/test/ |nc B‘IP 5555 将内容边打包边通过管道和nc命令传输到由对应IP地址和5555端口传到B机器,nc -l 5555 |tar -C /tmp/test/ -xf - 监听本机的555端口,并将接收到的内容解包至指定的目录(-C参数指定目标目录)

此外,tar还可与scp、ssh命令结合:

在A机打包后,复制到B机器并解包

tar -cf - /tmp/test | ssh B‘IP "cd /tmp; tar -xf -"

在A机打包,并将打包好的文件复制到B机

tar -cf - /tmp/test | ssh B‘IP "cd /tmp; cat - > test.tar"

tar -cf - /tmp/test | scp - B‘[email protected]‘IP:/tmp

将A机的打包文件,复制到B机并解包

zcat test.tar | ssh B‘IP "cd /tmp; tar -xf -"

也可以直接在本地这么使用:

cd /tmp/test1

tar -cf - . | (cd /tmp/test2 ; tar -xvpf -)

但有人试验后得出结论本地直接用cp较快

另外一些小技巧:

拷贝时除了拷贝单个文件还会拷贝目录,有时需要连同文件/目录的属性一同拷贝。可以在cp命令中使用-R参数递归拷贝目录,使用-p参数拷贝文件保留属性(默认是:mode,ownership,timestamps也可以通过 --preserve[=ATTR_LIST]指定要特别保留的属性如:context, links,xattr, all),使用-d参数拷贝文件保留连接。或者简单的使用-a参数(相当于使用-dR --preserve=all)

如果想看到拷贝大量小文件的进度可以写一个简单的小脚本:

cd /tmp/test

for i in *

do

cp $i 目标目录

echo $i is ok....

done

最后补充一条不是技巧的技巧:在使用一个工具完成一项任务之前,先思考当前用的工具是不是最适合的工具?有没有更好的工具或办法?如果工具确实很适用于当前任务,那么在使用该工具时有没有特殊的技巧可以提高工作效率?(通常,查看帮助文档可有意外收获)。

Linux系统之间拷贝文件的技巧总结

时间: 2024-10-27 07:02:33

Linux系统之间拷贝文件的技巧总结的相关文章

windows系统和Linux系统之间拷贝文件攻击--pscp

putty secure copy == pscp,是putty提供的文件传输攻击,通过ssh两件,在两台机器之间安全传输文件 获取pscp工具:http://www.chiark.greenend.org.uk/~sgtatham/putty/download.html,将.exe文件放在windows的system32文件夹下,或者自己设置环境变量.然后在dos命令窗口下即可直接调用. -r 复制目录下所有文件 -l 对方机器(Linux)用户名(root) -pw 密码 使用方法: 1.本

使用WinSCP在Windows和Linux系统之间传输文件

小梅哥编写,未经许可,严禁用于任何商业用途 2018年6月30日 在日常SoC开发中,我们经常需要在Windows和Linux系统之间传输文件,例如在Windows系统上的DS-5集成开发环境中编写好的Linux应用程序需要传递到Linux嵌入式开发板中(例如SoC FPGA开发板),或者需要将Linux系统中的文件拷贝到Windows上进一步操作处理,就涉及到两者之间的文件传输.实现上述场景中文件传输的一种比较便捷的方式,是使用SCP方式.在Windows系统中,可以通过安装WinSCP软件来

两台Linux系统之间传输文件的几种方法

scp传输 当两台LINUX主机之间要互传文件时可使用SCP命令来实现 scp传输速度较慢,但使用ssh通道保证了传输的安全性 复制文件 将本地文件拷贝到远程 scp 文件名 –用户名@计算机IP或者计算机名称:远程路径 从远程将文件拷回本地 scp –用户名@计算机IP或者计算机名称:文件名 本地路径 命令格式 scp local_file [email protected]_ip:remote_folder 或者 scp local_file [email protected]_ip:rem

不同Linux机器之间拷贝文件

不同的Linux之间copy文件常用有3种方法: 第一种就是ftp,也就是其中一台Linux安装ftp Server,这样可以另外一台使用ftp的client程序来进行文件的copy. 第二种方法就是采用samba服务,类似Windows文件copy 的方式来操作,比较简洁方便. 第三种就是利用scp命令来进行文件复制. scp是有Security的文件copy,基于ssh登录.操作起来比较方便,比如要把当前一个文件copy到远程另外一台主机上,可以如下命令. scp /home/daisy/f

linux服务器之间拷贝文件和文件夹

传输文件用法:scp 本机文件目录 远程服务器用户名@服务器IP:/服务器目录 示例: 输入远程服务器密码即可.(传输详细信息) 传输文件夹用法:scp -r 本机文件目录 远程服务器用户名@服务器IP:/服务器目录

linux系统之间复制文件

#scp -P22 /home/test.txt [email protected]:/home/ 本地文件test.txt 复制到远程服务器 #scp -P22 [email protected]:/home/test.txt /home/ 远程文件text.txt复制到本地home目录 ps: -P22 : 指定ssh的端口号,不加此选项默认是22

两个linux之间拷贝文件及文件夹

Linux为我们提供了两个用于文件copy的命令.一个是cp,一个是scp,可是他们略有不同,cp 主要是用于在同一台电脑上,在不同的文件夹之间来回copy文件 scp 主要是在不同的Linux系统之间来回copy文件.scp即security cp,带有安全性的复制. 在两台linux机之间拷贝文件,我们打开当中随意一台就可以,利用scp可实现两者之间文件文件夹的传输: 从本地server拷贝到远程server: (1) 拷贝文件: 命令格式: scp local_file [email pr

linux机器之间拷贝和同步文件命令

1 不同机器拷贝文件 scp 文件     登录用户@机器IP:/目录/子目录 scp filename [email protected]10.20.130.202:/home/test/ 2 文件[夹]同步 rsync 问题[网友提出的] linux的值拷贝某一个或某几个子目录的命令怎么写?如 /project下有好几个目录,/project/aaa  /project/ccc /project/ddd .... 我想把 project/aaa 复制到 /tmp目录下, project这个目

Linux主机之间传输文件的集中方法对比

1.scp传输 scp -r /data/file [email protected]:/data/ scp -C /data/sda.img [email protected]:/data/img/#-r: 支持目录#-C: 启用压缩传送 scp传输速度较慢,但使用ssh通道保证了传输的安全性 2.rsync差异化传输(支持断点续传,数据同步) rsync -av /backup/ -e ssh [email protected]192.168.1.110:/bak #-a: archive归