scp命令用在本地到服务器端文件的拷贝,scp是secure copy的缩写
在windows上,安装完putty后,会在对应目录下有scp.exe文件
在mac上,默认就scp命令的支持
在linux上,默认不支持,yum install openssh-clients安装
上传文件
scp local_file root@192.168.181.33:/var/www/html
曾遇到的问题:
在mac上上传文件到linux服务器,执行上传后,提示错误如下:
lizhiyongdeMacBook-Pro:src lizhiyong$ scp monster-ui.bz2 root@192.168.181.33:/var/www
root@192.168.181.33's password:
bash: scp: command not found
lost connection
但是在mac端查看有scp安装,那问题可能就出现在linux服务器上,果然在linux上没有scp.
yum install scp后会发现没有对应的安装包,scp是基于openssh执行的,ssh命令可以执行,
那就yum install openssh,执行成功后发现仍然不能上传成功,最后查明scp在openssh-clients包里,
最后yum install openssh-clients后,执行成功
如果上传过程时,出现如下错误
tput: No value for $TERM and no -T specified
- Checking for command line arguments
解决办法:
在服务器~/.bashrc文件中增加如下脚本
if [ "$TERM" != "screen" ] && [ "$SSH_TTY" != "" ] && [ "$SSH_CONNECTION" != "" ]; then
screen -S sshscreen -d -R && exit
fi
上传目录
scp -r local_directory root@192.168.181.33:/var/www/html
下载文件
scp root@192.168.181.33:/test /tmp
下载目录
scp -r root@192.168.181.33:/test/1 /tmp
拷贝软链接错误
scp拷贝软链接文件时,不是拷贝的单独的软链接文件,而是将链接的源文件都拷贝过来。
如果执行拷贝软链接目录的话,会在目录下 递归拷贝,直到拷贝的路径名长度达到系统限制才停止。
用scp解决不了这样的问题,只能是先将文件压缩,然后再拷贝了