小编php*_*_qq的帖子

用符号链接替换 ​​etc 中的文件是个好主意吗?

我不经常切换机器,但我不想被绑定到一台机器。我不升级硬件的原因通常是因为我不想设置新机器。

到目前为止,我已经努力将大部分内容集中在主目录中,以便轻松备份和部署在新计算机上。

最大的问题是那些(可能有数百个)配置文件,我已经对其进行了一些(通常是微小的)更改,但如果没有它们在新机器上,任何东西都无法工作。

我有一个想法,制作一个脚本,从 etc 中抓取文件,将它们放在我的主目录中,并用符号链接替换原始文件。然后我会有另一个脚本,在新机器上将检查抓取的文件并用符号链接替换原始文件。

我不确定这听起来有多令人困惑,所以这里有一个简单的例子。

#!/bin/bash

FILE=$(realpath $1)
TARGET=$(realpath ~/snatched)$FILE

mkdir -p $TARGET
mv $FILE $TARGET
ln -s $TARGET $FILE
Run Code Online (Sandbox Code Playgroud)

然后运行

snatch /etc/hosts
Run Code Online (Sandbox Code Playgroud)

将在原始位置放入并创建符号链接/etc/hosts~/snatched/etc/hosts

我担心水下的石头,任何会让我将来后悔的事情,基本上都是来自更有经验的用户的建议。

谢谢!

backup etc symlink

7
推荐指数
3
解决办法
2193
查看次数

将存储在变量中的空格分隔参数传递给命令

我从互联网上劫持了一个非常简洁的备份脚本,但在某些地方发生了类似的事情

DIRS="/home/ /var/www/html /etc"

tar -czf /backup/file.tar.gz "${DIRS}"
Run Code Online (Sandbox Code Playgroud)

这恰好在我的机器上运行良好,但在我的服务器上它似乎认为它是一条路径并告诉我它不存在:

/bin/tar: /home/ /var/www/html /etc: Cannot stat: No such file or directory 
/bin/tar: Exiting with failure status due to previous errors
Run Code Online (Sandbox Code Playgroud)

本地 tar 版本是 1.29 而服务器是 1.28

将目录与该变量分开提供给 tar 的正确方法是什么?

command-line bash tar

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

PATH(环境变量)中的通配符

我在我的主目录中本地安装了一堆应用程序。为了使它们在全球范围内可用,我将它们添加PATH.bashrc

PATH="$PATH:/home/user/apps/app1/bin"
PATH="$PATH:/home/user/apps/app2/bin"
PATH="$PATH:/home/user/apps/appn/bin"
Run Code Online (Sandbox Code Playgroud)

我该如何设置才能不必添加每个新的?我正在尝试这个,但它不起作用:

PATH="$PATH:/home/user/apps/*/bin"
Run Code Online (Sandbox Code Playgroud)

注意:我知道我可以用循环添加它们,但我也担心我的PATH变量会变得太大,我想知道是否可以以某种方式使用通配符。

bash path environment-variables

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

标签 统计

bash ×2

backup ×1

command-line ×1

environment-variables ×1

etc ×1

path ×1

symlink ×1

tar ×1