Linux远程拷贝文件命令 scp
从远程服务器复制指定文件到本地主机的指定目录下,基本语法格式如下:
scp user@ip:/path/to/remote/file /path/to/local/directory
参数说明:
user@ip::指的是用户名和远程服务器的IP地址,如root@192.168.3.5。注意,用户名和服务器IP地址都是远程服务器的而不是本地服务器的。注意:冒号是必须的。
/path/to/remote/file:指的是远程服务器上你想要复制的文件,如/root/.ssh/restart.sh。
/path/to/local/directory:指的是将远程服务器上的文件复制到本地后存放在哪个目录,如/root/home。
例如,将远程服务器上的/root/test.txt文件复制到本地服务器上的/root/a 目录下注意,需要输入远程服务器指定用户的密码。
scp root@192.168.0.2:/root/test.txt /root/a
————————————————
从远程服务器复制指定目录到本地主机的指定目录下,基本语法格式如下:
scp -r user@ip:/path/to/remote/directory /path/to/local/directory
参数说明:
-r:是一个选项,表示以递归的方式复制,复制目录的时候使用。
user@ip::指的是用户名和远程服务器的IP地址,如root@192.168.3.5。注意,用户名和服务器IP地址都是远程服务器的而不是本地服务器的。注意:冒号是必须的。
/path/to/remote/directory:指的是远程服务器上你想要复制的目录。
/path/to/local/directory:指的是将远程服务器上的目录复制到本地后存放在哪个目录下,如/root/home。
例如,将远程服务器上的/root/a/
文件夹复制到本地服务器上的/root/home
目录下,注意,需要输入远程服务器指定用户的密码。
scp -r root@192.168.40.90:/root/a /root/home
————————————————
将本地服务器上的指定文件上传到远程服务器上的指定目录下,语法如下:
scp /path/to/local/file user@ip:/path/to/remote/directory
参数说明:
user@ip::指的是用户名和远程服务器的IP地址,如root@192.168.0.2。注意,用户名和服务器IP地址都是远程服务器的而不是本地服务器的。注意:冒号是必须的。
/path/to/local/file:指的是本地服务器待上传的文件,如/root/a/local.txt。
/path/to/remote/directory:指的是将本地服务器上的文件上传后存放在哪个目录,如/root/home。
scp /root/a/local.txt root@192.168.40.90:/root/home
————————————————
将本地服务器上的指定文件上传到远程服务器上的指定目录下,语法如下:
scp -r /path/to/local/directory user@ip:/path/to/remote/directory
参数说明:
-r:是一个选项,表示以递归的方式复制,复制目录的时候使用。
user@ip::指的是用户名和远程服务器的IP地址,如root@192.168.3.5。注意,用户名和服务器IP地址都是远程服务器的而不是本地服务器的。注意:冒号是必须的。
/path/to/remote/directory:指的是远程服务器上你想要复制的目录。
/path/to/local/directory:指的是将远程服务器上的目录复制到本地后存放在哪个目录下,如/root/home。
例如,将本地服务器上的/root/a
文件夹上传到远程服务器,放在/root/home
目录下,注意,需要输入远程服务器指定用户的密码。
scp -r /root/a/ root@192.168.40.90:/root/home
不覆盖已存在的文件
使用cp命令的-n参数即可跳过相同的文件 ,但scp却没这个参数,如何实现呢?
解决方案:
- 使用rsync 启动-u可以跳过已经下载好的文件
rsync -avzu --progress /root/client/ root@192.168.0.22:/home/work/ #将本地目录或文件传到远程服务器
或
rsync -avzu --progress root@192.168.0.22:/home/work/ /root/client/ #将远程目录或文件传到本都
--progress 可以查看拷贝的过程