【问题标题】:Script only copying one file脚本只复制一个文件
【发布时间】:2014-10-13 17:09:52
【问题描述】:

我正在尝试 scp 将目录中的所有文件传输到不同的盒子 - 但是我似乎只在另一台机器上接收一个文件。我使用的脚本如下;

#!/usr/bin/expect -f

# connect via scp
spawn scp -r /var/opt/backup/mariadb/ user@ip:address:of:box:/var/opt/backup/
#######################
expect {
  -re ".*es.*o.*" {
   exp_send "yes\r"
   exp_continue
  }
  -re ".*sword.*" {
    exp_send "password\r"
  }
}
expect eof

echo "copy completed"
echo "removing backup files now"
rm -rf /var/opt/backup/mariadb
echo "remove completed"
echo "finished!"

从我所阅读的递归命令来看,我已经实现了它,所以我不太确定为什么我可能只收到一个文件。

谁能看到我的代码有任何问题。

添加了更多信息:我发现副本实际上卡在以下行 events_waits_summary_global_by_event_name.frm

谢谢

在重定向日志上输出 less 命令

^MSwifteHots.frm                                  0%    0     0.0KB/s   --:-- ETA^MSwifteHots.frm                                100% 8600     8.4KB/s   00:00    
^MChatSessions.frm                                0%    0     0.0KB/s   --:-- ETA^MChatSessions.frm                              100% 8626     8.4KB/s   00:00    
^MMessages.frm                                    0%    0     0.0KB/s   --:-- ETA^MMessages.frm                                  100% 8640     8.4KB/s   00:00    
^MApnsDevices.frm                                 0%    0     0.0KB/s   --:-- ETA^MApnsDevices.frm                               100% 8670     8.5KB/s   00:00    
^MAvailableHots.frm                               0%    0     0.0KB/s   --:-- ETA^MAvailableHots.frm                             100% 8604     8.4KB/s   00:00    
^Mdb.opt                                          0%    0     0.0KB/s   --:-- ETA^Mdb.opt                                        100%   65     0.1KB/s   00:00    
^MShortlist.frm                                   0%    0     0.0KB/s   --:-- ETA^MShortlist.frm                                 100% 8598     8.4KB/s   00:00    
^MProfileImages.frm                               0%    0     0.0KB/s   --:-- ETA^MProfileImages.frm                             100% 8896     8.7KB/s   00:00    
^MPendingProfile.frm                              0%    0     0.0KB/s   --:-- ETA^MPendingProfile.frm                            100% 8674     8.5KB/s   00:00    
^MUserAccount.frm                                 0%    0     0.0KB/s   --:-- ETA^MUserAccount.frm                               100% 9111     8.9KB/s   00:00    
^Mibdata1                                         0%    0     0.0KB/s   --:-- ETA^Mibdata1                                        32% 3280KB   3.2MB/s   00:02 ETA^Mibdata1                                        45% 4688KB   3.0MB/s   00:01 ETA^Mibdata1                                        58% 5968KB   2.8MB/s   00:01 ETA^Mibdata1                                        72% 7376KB   2.7MB/s   00:01 ETA^Mibdata1                                        84% 8656KB   2.6MB/s   00:00 ETA^Mibdata1                                        98%   10MB   2.4MB/s   00:00 ETA^Mibdata1                                       100%   10MB   1.7MB/s   00:06    
^Mxtrabackup_logfile                              0%    0     0.0KB/s   --:-- ETA^Mxtrabackup_logfile                            100% 2048KB   2.0MB/s   00:00    
^Mevents_waits_history.frm                        0%    0     0.0KB/s   --:-- ETA^Mevents_waits_history.frm                      100% 9220     9.0KB/s   00:00    
/var/tmp/cron.log (END)

【问题讨论】:

  • 我相信 expect 有一个内置的超时时间来确定一个进程在被杀死之前将等待多长时间。如果您在开始之前在期望脚本中 set timeout -1 会解决问题吗?
  • 我不熟悉expect,但我认为有一个混淆。如果直接调用expect,则表示你的shebang应该是“/bin/sh”而不是“/usr/bin/expect”。顺便说一句,我认为配置密钥对比硬编码密码更安全(您可以控制;或精确地控制密钥的权限)
  • 当您说“只复制一个文件”时,是否意味着您的 scp 命令成功完成($? 等于 0)并且脚本继续执行?或者这是否意味着 scp 命令被卡住了?还有什么?
  • 我已经在我重定向的日志文件中添加了 less 的输出
  • 使用与您的脚本运行相同的用户,尝试在命令行上执行 scp,看看它是否要求某些内容。我看到很多“0%”“0.0KB/s”,也许 scp 对你使用的东西根本不起作用。

标签: bash shell crontab expect scp


【解决方案1】:

我只会使用 rsync 而不是 scp。

rsync -aP ~/dir1 username@remote_host:destination_directory

这里,“-a”代表“存档”,递归同步并保留符号链接、特殊和设备文件、修改时间、组、所有者和权限。 “-P”表示您的进度。

请注意,源目录中没有尾部斜杠(使用 rsync 执行本地到本地时使用斜杠)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-11-20
    相关资源
    最近更新 更多