我不经常切换机器,但我不想被绑定到一台机器。我不升级硬件的原因通常是因为我不想设置新机器。
到目前为止,我已经努力将大部分内容集中在主目录中,以便轻松备份和部署在新计算机上。
最大的问题是那些(可能有数百个)配置文件,我已经对其进行了一些(通常是微小的)更改,但如果没有它们在新机器上,任何东西都无法工作。
我有一个想法,制作一个脚本,从 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
我担心水下的石头,任何会让我将来后悔的事情,基本上都是来自更有经验的用户的建议。
谢谢!
我从互联网上劫持了一个非常简洁的备份脚本,但在某些地方发生了类似的事情
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 的正确方法是什么?
我在我的主目录中本地安装了一堆应用程序。为了使它们在全球范围内可用,我将它们添加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
变量会变得太大,我想知道是否可以以某种方式使用通配符。