标签: bash

如何重复调用 rsync 直到文件成功传输

我正在尝试从不可靠的远程服务器同步文件,这意味着连接往往会“随机”失败

rsync:连接意外关闭

rsync 是用 --partial 调用的,所以我希望能够在循环中调用 rsync 直到文件完全传输。似乎没有告诉 rsync 重试的标志。

编写脚本的最佳方法是什么?bash for 循环?

linux bash rsync

34
推荐指数
3
解决办法
4万
查看次数

在 Linux 中合并 2 个目录树而不复制?

我有两个布局相似的目录树,即

.
 |-- dir1
 |   |-- a
 |   |   |-- file1.txt
 |   |   `-- file2.txt
 |   |-- b
 |   |   `-- file3.txt
 |   `-- c
 |       `-- file4.txt
 `-- dir2
     |-- a
     |   |-- file5.txt
     |   `-- file6.txt
     |-- b
     |   |-- file7.txt
     |   `-- file8.txt
     `-- c
         |-- file10.txt
         `-- file9.txt
Run Code Online (Sandbox Code Playgroud)

我想合并 dir1 和 dir2 目录树以创建:

 merged/
 |-- a
 |   |-- file1.txt
 |   |-- file2.txt
 |   |-- file5.txt
 |   `-- file6.txt
 |-- b
 |   |-- file3.txt
 |   |-- file7.txt …
Run Code Online (Sandbox Code Playgroud)

linux files bash

34
推荐指数
3
解决办法
3万
查看次数

防止 xargs 在出错时退出

根据手册页,如果执行行之一以 255 错误退出,则 xargs 将退出:

如果命令的任何调用以 255 的状态退出,xargs 将立即停止而不读取任何进一步的输入。发生这种情况时,会在 stderr 上发出错误消息。

我怎样才能让 xargs这样做?

我有一个大约 1500 行的批处理作业,我想一次运行 50 行。我发现它总是在某条生产线上死亡,并且没有完成工作。不好!

一个更好的问题,描述我正在尝试做的事情的问题是:

我怎样才能运行一个 1500 行的批处理脚本,一次 50 行,这样它就不会在中间退出作业,并将输出捕获到某种日志文件中?

bash command-line-interface batch-processing xargs

34
推荐指数
6
解决办法
3万
查看次数

如何在 bash 中将下载的文件通过管道传输到标准输出?

怎么可能通过管道输出wget下载的文件?如果不是,我应该使用哪些替代方案?

linux ubuntu bash pipe wget

33
推荐指数
3
解决办法
5万
查看次数

bash 脚本:如果返回错误则重复命令

我想创建一个循环,如果它返回错误,则重复 ncftp 传输。

我有点不确定如何在循环中使用退出代码变量。这样的东西会起作用吗?

until [$? == 0]; do
    ncftpput -DD -z -u user -p password remoteserver /remote/dir /local/file
done
Run Code Online (Sandbox Code Playgroud)

bash

33
推荐指数
3
解决办法
5万
查看次数

强制 SSH 使用特定的 shell

有没有办法强制 SSH 在远程端使用特定的 shell,而不管用户的默认 shell 是什么?

我尝试过类似的解决方案:

ssh host.domain.com /bin/bash -c 'complicated, multi-line command'
Run Code Online (Sandbox Code Playgroud)

但不幸的是,远程端的默认 shell 负责解析“复杂的多行命令”部分,我很难充分地转义它以供 Bash 和 C shell 用户使用。

ssh shell bash command-line-interface

33
推荐指数
4
解决办法
9万
查看次数

将文件的所有者权限复制到组权限

如何将文件的用户/所有者权限复制到其组权限?

例如,如果权限是 755,我希望它们变成 775。

澄清:755 -> 775 123 -> 113 abc -> aac

如果我可以对目录中的所有文件递归执行此操作,则奖励。

(也就是说,对于每个文件,所有者权限都被复制到组权限中。每个文件可能具有不同的权限。)

linux permissions bash file-permissions

33
推荐指数
1
解决办法
1万
查看次数

我如何确定什么占用了这么多空间?

我正在使用 df -h 打印出人类可读的磁盘使用情况。我想弄清楚是什么占用了这么多空间。例如,有没有办法通过管道传输此命令,以便它打印出大于 1GB 的文件?其他想法?

谢谢

bash centos disk-space-utilization

33
推荐指数
4
解决办法
5万
查看次数

无法通过 SSH 登录到任何使用 Synology NAS 上的 /bin/bash shell 的帐户

我正在尝试在嵌入式设备(Synology DS212+ NAS)上运行的 ARM Linux 上安装 bash 作为默认 shell。但确实有些不对劲,我无法弄清楚它是什么。

症状:

1)root有/bin/bash作为默认shell,可以通过SSH正常登录:

$ grep root /etc/passwd
root:x:0:0:root:/root:/bin/bash

$ ssh root@NAS
root@NAS's password:
Last login: Sun Dec 16 14:06:56 2012 from desktop
# 
Run Code Online (Sandbox Code Playgroud)


2) joeuser 将 /bin/bash 作为默认 shell,并在尝试通过 SSH 登录时收到“权限被拒绝”:

$ grep joeuser /etc/passwd
joeuser:x:1029:100:Joe User:/home/joeuser:/bin/bash

$ ssh joeuser@localhost
joeuser@NAS's password:
Last login: Sun Dec 16 14:07:22 2012 from desktop
Permission denied, please try again.
Connection to localhost closed.
Run Code Online (Sandbox Code Playgroud)


3) 将 joeuser 的 shell 改回 /bin/sh:

$ grep joeuser /etc/passwd
joeuser:x:1029:100:Joe …
Run Code Online (Sandbox Code Playgroud)

linux ssh bash synology

33
推荐指数
2
解决办法
3万
查看次数

使用 sed 删除字符串周围的开始和结束方括号

我正在 Ubuntu 12.04.1 LTS 上的 bash shell 中运行此命令。我试图一举删除[]字符,即不必第二次通过管道传输到 sed。

我知道方括号在正则表达式中具有特殊含义,所以我通过在前面加上反斜杠来逃避它们。我期待的结果只是字符串,123但方括号仍然存在,我很想知道为什么!

~$ echo '[123]' | sed 's/[\[\]]//'
[123]
Run Code Online (Sandbox Code Playgroud)

bash regex sed

33
推荐指数
2
解决办法
7万
查看次数