我正试图通过VPN使用SSH将本地文件'magento.tar.gz'从本地机器复制到远程服务器。这是连接到虚拟机的内部IP,我在这里用它作为xx.x.x.xx。
我在SSH帐户上有完全的"sudo"访问权限,所以复制时应该不会有任何问题。我尝试过以下几种:
我已经尝试了以下操作(magento.tar.gz文件已经在本地根目录中)
sudo scp magento.tar.gz user@xx.x.x.xx/var/www/
这会要求我输入本地密码。之后返回cp: user@xx.x.x.xx/var/www: Not a directory
sudo scp /Users/myname/magento.tar.gz user@xx.x.x.xx/var/www/
返回相同值。
我需要在任何地方包含SSH吗?
我需要先通过SSH连接到站点吗?
附带说明:我已经设法通过SSH连接到服务器,浏览到目录,创建一个文件夹,并使用sudo mkdir
等删除它,所以我肯定有权限。
首先,您需要在IP地址后添加:
,以指示路径如下:
scp magento.tar.gz user@xx.x.x.xx:/var/www
我认为你不需要sudo
和scp
。在这种情况下,它不影响远程机器,只影响本地命令。
然后,如果您的user
@xx.x.x.xx没有对/var/www
的写访问权限,则需要分两次进行:
复制到主文件夹中的远程服务器(:
表示远程主文件夹,如果需要,请使用:subfolder/
,或者:/home/user/
表示完整路径):
scp magento.tar.gz user@xx.x.x.xx:
然后SSH并移动文件:
ssh user@xx.x.x.xx
sudo mv magento.tar.gz /var/www
为了澄清JScoobyCed给出的答案,scp命令不能将文件复制到需要管理权限的目录中。但是,您可以使用scp命令复制到属于远程用户的目录中。
因此,要复制到需要root权限的目录,必须首先使用scp命令将该文件复制到属于远程用户的目录。接下来,您必须使用ssh登录到远程帐户。登录后,您可以使用sudo mv命令将文件移动到您选择的目录中。简而言之,要使用的命令如下:
使用scp,将文件复制到远程用户帐户中的一个目录,例如Documents目录:
scp /path/to/your/local/file remoteUser@some_address:/home/remoteUser/Documents
接下来,使用ssh登录到远程用户的帐户,然后使用sudo:将文件移动到受限目录
ssh remoteUser@some_address
sudo mv /home/remoteUser/Documents/file /var/www
注意文件名中也没有:
。我发现我必须先使用mv blah-07-08-17-02:69.txt no_colons.txt
,然后使用scp no-colons.txt server:
,然后不要忘记在服务器上使用mv
。以防万一这是个问题。
对于scp:
scp /path/to/your/localFiles remoteUser@remoteAddress:remoteport/home/remoteUser/yourRemoteFiles
rsync运行得越来越好:
rsync -aP /path/to/your/localFiles remoteUser@remoteAddress:remoteport/home/remoteUser/yourRemoteFiles
这两个命令也起相反的作用,远程服务器到本地机器,本地机器到远程服务器