标签: bash

如何保留:一周的每日备份,一个月的每周备份,一年的每月备份,以及之后的每年备份

我需要每天备份此服务器上的数据和配置文件。我需要保持:

  • 一周的每日备份
  • 一个月的每周备份
  • 一年的每月备份
  • 之后每年备份

所有这些都是通过每天从 cron 运行的 shell 脚本完成的。

这是备份文件在运行 10 年后的样子:

blog-20050103.tar.bz2
blog-20060102.tar.bz2
blog-20070101.tar.bz2
blog-20080107.tar.bz2
blog-20090105.tar.bz2
blog-20100104.tar.bz2
blog-20110103.tar.bz2
blog-20120102.tar.bz2
blog-20130107.tar.bz2
blog-20130902.tar.bz2
blog-20131007.tar.bz2
blog-20131104.tar.bz2
blog-20131202.tar.bz2
blog-20140106.tar.bz2
blog-20140203.tar.bz2
blog-20140303.tar.bz2
blog-20140407.tar.bz2
blog-20140505.tar.bz2
blog-20140602.tar.bz2
blog-20140707.tar.bz2
blog-20140728.tar.bz2
blog-20140804.tar.bz2
blog-20140811.tar.bz2
blog-20140816.tar.bz2
blog-20140817.tar.bz2
blog-20140818.tar.bz2
blog-20140819.tar.bz2
blog-20140820.tar.bz2
blog-20140821.tar.bz2
blog-20140822.tar.bz2
Run Code Online (Sandbox Code Playgroud)

linux backup bash

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

Linux gzip 多个子目录到单独的档案中?

我如何能够将子目录压缩到单独的档案中?

例子:

directory
 subdir1
 subdir2
Run Code Online (Sandbox Code Playgroud)

应该创建 subdir1(.tar).gz 和 subdir2(.tar).gz

bash tar gzip

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

使用tail时将\n字符显示为换行符?

我有一个文件,我正在尝试使用 tail -f 读取该文件。我想知道是否有办法让终端输出实际的换行符而不是 \n 字符。

linux bash command-line-interface

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

如何显示接口的IP地址?

如果我想显示分配给 eth1 的 IP 地址,我该如何在 Bash 中执行此操作?

networking shell bash ip ip-address

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

Ubuntu 上的 Bash 提示 - FQDN (\H) 与主机名 (\h) 相同

我们在我的工作场所有单独的环境用于开发、测试、集成和登台。

在这些环境中,我们重载了 DNS 中的主机名——例如,在开发环境中,主 Web 机器被称为web1.dev.example.com,而在测试环境中,主 Web 机器是web1.test.example.com

为了区分不同环境中的机器,我想自定义 bash 提示以显示 FQDN 而不仅仅是主机名。好,好;我应该可以\h\Hin替换$PS1,对吗?唔。它们显示了完全相同的东西。

me@web1:~$ hostname
web1
me@web1:~$ hostname -f
web1.dev.example.com
me@web1:~$ export PS1="\[\u@\h: \w\]\$ "
me@web1: ~$ export PS1="\[\u@\H: \w\]\$ "
me@web1: ~$ 
Run Code Online (Sandbox Code Playgroud)

在 中/etc/hostname,我只有主机名 ( web1)。hostname并且hostname -f都返回正确的结果(分别为“web1”和“web1.test.example.com”),并且我在/etc/hosts.

是什么赋予了?

这些是 Ubuntu 10.04 主机,如果这有区别的话。

ubuntu bash fqdn

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

在 pts 登录的“last”输出中缺少 IP 信息的原因?

我有五个 CentOS 6 linux 系统在工作,并且遇到了一个相当奇怪的问题,似乎只发生在我拥有的所有 linux 系统中的用户 ID ......这是我从last命令中排除的条目的问题示例.. .

mpenning pts/19                        Fri Nov 16 10:32 - 10:35  (00:03)
mpenning pts/17                        Fri Nov 16 10:21 - 10:42  (00:21)
bill     pts/15       sol-bill.local   Fri Nov 16 10:19 - 10:36  (00:16)
mpenning pts/1        192.0.2.91       Fri Nov 16 10:17 - 10:49 (12+00:31)
kkim14   pts/14       192.0.2.225      Thu Nov 15 18:02 - 15:17 (4+21:15)
gduarte  pts/10       192.0.2.135      Thu Nov 15 12:33 - 08:10 (11+19:36)
gduarte  pts/9        192.0.2.135      Thu Nov 15 12:31 - 08:10 …
Run Code Online (Sandbox Code Playgroud)

linux login bash terminal centos

18
推荐指数
5
解决办法
6088
查看次数

chsh:PAM 认证失败

我想更改默认的 shell env

chsh -s /bin/zsh以root用户身份运行,

但是出现了一条错误消息:chsh: PAM authentication failed

我发现这个线程http://ubuntuforums.org/showthread.php?t=1702833

但答案并没有解决我的问题

任何帮助,将不胜感激


这是/etc/pam.d/chsh的内容

#
# The PAM configuration file for the Shadow `chsh' service
#

# This will not allow a user to change their shell unless
# their current one is listed in /etc/shells. This keeps
# accounts with special shells from changing them.
auth       required   pam_shells.so

# This allows root to change user shell without being
# prompted for a password
auth …
Run Code Online (Sandbox Code Playgroud)

linux shell bash

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

Docker exec/run shell 命令嵌套

用例的简短介绍:

我正在使用docker容器来运行我的go测试go test ./...。这可以使用 轻松实现docker exec <container> /bin/sh -c "go test ./..."。不幸的是go test ./...运行在所有子目录中,我想排除一个(供应商目录)。

建议的解决方案是使用以下命令:go test $(go list ./... | grep -v '<excluded>',不知何故这让我得到以下结果:

docker run golang:1.6.2-alpine /bin/sh -c "go test " (我已经在 run 和 exec 上对此进行了测试,但它们可能使用相同的核心)。

当我使用 ssh 进入容器docker exec -it <container_id> /bin/sh并运行完全相同的命令时,它就像一个魅力。

似乎通过 docker exec/run 执行 shell 命令不支持任何嵌套的命令$()

bash docker

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

通过管道压缩命令输出到 bzip2

是否可以将命令输出通过管道传输到 bzip2 以压缩到输出文件?

类似的东西:

cat somefile.txt | bzip2 --output somefile.txt.bz2
Run Code Online (Sandbox Code Playgroud)

linux bash

18
推荐指数
2
解决办法
5391
查看次数

即使使用 -f cp 命令也会提示覆盖

我正在尝试使用以下命令将所有较新的 jpg 从一个文件夹复制到另一个文件夹

cp -u --force /home/oldfolder/*.jpg /home/newfolder/
Run Code Online (Sandbox Code Playgroud)

我得到以下提示:

cp: overwrite `/home/newfolder/4095-181.jpg'?
Run Code Online (Sandbox Code Playgroud)

我知道的“-u”工作正常,因为它只提示我使用较新的文件,但我不想得到提示,我只是想让它覆盖它们。我试过 --force 和 -f

有什么建议?

提前致谢

bash copy centos

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