我需要创建一个tar并将其发送到我的本地文件夹。 如果我可以创建tar文件,我可以使用scp轻松地在本地文件夹中获取它。 这里的问题是第一步:在远程服务器上创建TAR。服务器只能通过另一个远程服务器(堡垒服务器)访问。
以下是我目前使用的命令:
timestamp="20160226-085856"
ssh bastion_server -t ssh remote_server "sudo su -c \"cp -r /etc/nginx /home/ubuntu/backup/nginx_26Feb && cd /home/ubuntu/backup && tar -C /home/ubuntu/backup -cf backup_nginx-$timestamp.tar ./nginx_26Feb\" "
这是我得到的错误:
su: invalid option -- 'r'
Usage: su [options] [LOGIN]
这里的任何帮助都会很棒。
答案 0 :(得分:0)
尝试一下,不要花哨sudo su -c
。使用sudo -s
就足够了:
ssh bastion_server -t ssh remote_server "sudo -s cp -r /etc/nginx \
/home/ubuntu/backup/nginx_26Feb && cd /home/ubuntu/backup && \
tar -C /home/ubuntu/backup -cf backup_nginx-$timestamp.tar ./nginx_26Feb"
或者更确切地设置正确的两跳~/.ssh/config
:
Host bastion
Hostname bastion_server
Host remote
Hostname remote_server
ProxyCommand ssh -W %h:%p bastion
然后运行
ssh remote sudo su -c "cp -r /etc/nginx /home/ubuntu/backup/nginx_26Feb \
&& cd /home/ubuntu/backup && tar -C /home/ubuntu/backup -cf \
backup_nginx-$timestamp.tar ./nginx_26Feb"
没有花哨的逃避和东西。