我使用一个期望脚本来自动将一些支持文件传输到终端上。支持文件在被 scp 到目标终端之前会自动压缩。这是由内部的 expect 程序完成的,该程序会自动填写 scp 的密码,因此我们不必输入密码。我可以毫无问题地复制单个文件,但是当我尝试复制 tar.gz 时文件,它更改 /tmp 目录的权限。我一直在将 /tmp 目录修改回 1777 以获得权限并将其更改为 root.root,这是它通常的设置方式,但这并不总是有效。由于sqlite无法将临时文件写入/tmp,这会导致sqlite错误,这非常具有破坏性。我如何确定造成这种情况的确切原因?我知道它必须与 tar.gz 文件有关,
我的目录中文件的权限是:
-rw-rw-r-- 1 aembree aembree 88K Oct 2 15:20 dropin.tar.gz
Run Code Online (Sandbox Code Playgroud)
在传输之前 /tmp 在 ls -al 中看起来像这样:
drwxrwxrwt 15 root root 8.4K Oct 2 15:08 tmp
Run Code Online (Sandbox Code Playgroud)
传输后 /tmp 看起来像这样:
drwxrwxr-x 15 10539 10539 8.4K Oct 2 15:01 tmp
Run Code Online (Sandbox Code Playgroud)
正在运行的 tar 命令如下:
tar -vPczf /home/aembree/bin/resources/dev/dropin.tar.gz --exclude='helperscript' -C $dropinlist . > /home/aembree/bin/resources/logs/tarlog
Run Code Online (Sandbox Code Playgroud)
一旦文件在远程机器上,expect 执行以下命令来解压它:
send "cd /tmp ; tar -xzf dropin.tar.gz ; rm dropin.tar.gz ; …
Run Code Online (Sandbox Code Playgroud)