当前位置:首页>Linux>Linux 多机器配置同步——dotfiles 管理与一键部署

Linux 多机器配置同步——dotfiles 管理与一键部署

  • 2026-06-28 10:51:22
Linux 多机器配置同步——dotfiles 管理与一键部署

大家好,我是冯哥的缓存。

上篇建好了自己的Shell 函数库,所有脚本都变得整洁利落。但还有一个问题没解决——换一台机器,所有东西都要重新配一遍

新机器上:

·~/.bashrc要重新写(或者从旧机器复制)

·~/bin/里的函数库和脚本要重新传过去

·SSH 密钥、Git 配置、vim 配置……每样都要手动弄

如果只有一台电脑,这问题不大。但如果像我一样:

·台式机装桌面版Linux

·笔记本装另一个发行版

·服务器要用命令行操作

·偶尔还要在朋友的电脑上临时用一下

每次重新配环境都要花半天,太浪费生命了。

这一篇,我们就来聊一下怎么解决这个问题—— dotfiles 管理所有配置文件,换机器一条命令还原全套环境

💡提示: dotfiles  Linux/Unix 下用 Git 管理配置文件的通用做法,几乎所有资深 Linux 用户都有一套自己的 dotfiles

一、什么是dotfiles

1.1 "点文件"说起

Linux 下,以 .开头的文件或目录默认是隐藏的(用 ls -a才能看到)。这些文件通常存放用户个人配置:

文件/目录

作用

~/.bashrc

bash Shell 配置

~/.zshrc

zsh Shell 配置

~/.vimrc

Vim 编辑器配置

~/.gitconfig

Git 全局配置

~/.ssh/

SSH 密钥和配置(敏感,不能随便推到公开仓库

~/.config/

现代 Linux 应用的配置目录(firefoxVS Codealacritty  等),应用配置越来越多,是dotfiles管理的重点

这些文件加起来,就是这台机器上的"工作环境"

1.2 dotfiles 管理的核心思路

┌────────────────────────────────────────────────┐

Git 仓库(dotfiles

┌──────────┐┌──────────┐┌──────────┐

│ .bashrc│ .vimrc│ .gitconfig│

│ mylib.sh ││ scripts/ ││ .zshrc

└──────────┘└──────────┘└──────────┘

└──────────────────┬─────────────────────────────┘

│ git push

GitHub / Gitee 远程仓库

│ git clone(换机器时)

┌────────────────────────────────────────────────┐

新机器的 ~/dotfiles/

通过软链接或部署脚本,还原到 ~/ 对应位置

└────────────────────────────────────────────────┘

总结:把配置文件集中到一个 Git 仓库里,换机器时 git clone + 部署,几分钟还原全套环境。

二、方案选择——三种主流做法对比

在开始之前,先看看三种主流方案,选一个适合的:

方案

原理

优点

缺点

推荐人群

① Git 裸仓库

 git init --bare 直接在 $HOME 建仓库

不用软链接,原地管理

命令稍复杂,需要别名封装

追求极简、不介意复杂命令的用户

② GNU stow

用软链接把 dotfiles/ 里的文件"映射" $HOME

干净、可反向删除、支持批量操作

需要额外安装 stow

大多数人,推荐新手

③ 手动软链接

自己写脚本,用 ln -s 创建链接

完全可控,无依赖

需要自己维护脚本

想完全控制、不在意维护脚本的用户

💡推荐:如果第一次搞 dotfiles,直接用 GNU stow 方案,最省心也最容易理解。下文也以 stow 方案为主讲解。

三、用 GNU stow 管理 dotfiles(推荐方案)

3.1 安装 stow

# Debian/Ubuntu

sudo apt install stow

# Arch

sudo pacman -S stow

# Fedora

sudo dnf install stow

# openSUSE

sudo zypper install stow

验证安装:

stow --version

3.2 建立 dotfiles 目录结构

stow 的核心思想是:在一个目录里按""组织配置文件,每个包对应一组软链接

推荐的目录结构:

~/dotfiles/# Git 仓库根目录

├── bash/# "bash" 

└── .bashrc实际文件(注意:这里是 .bashrc,不是bashrc

├── zsh/# "zsh" 

└── .zshrc

├── git/# "git" 

└── .gitconfig

├── vim/# "vim" 

└── .vimrc

├── bin/# "bin" 包(脚本和函数库)

├── lib/

└── mylib.sh

└── scripts/

└── backup.sh

├── config/# "config" 包(~/.config 下的内容)

└── alacritty/

└── alacritty.yml

└── install.sh一键部署脚本(换机器时用)

注意: stow 默认把包目录里的内容"链接到父目录"。所以 bash/包里的 .bashrc,执行 stow bash后会出现在 ~/.bashrc

3.3 第一次初始化

假设已经有了一套配置,现在要把它纳入 dotfiles 管理:

第一步:创建目录并迁入现有配置

创建 dotfiles 目录

mkdir -p ~/dotfiles/bash

cd ~/dotfiles

把现有的 .bashrc 移进去(注意路径!)

mv ~/.bashrc ~/dotfiles/bash/

创建软链接,让 ~/.bashrc 指向 ~/dotfiles/bash/.bashrc

stow bash

执行完stow bash之后,检查一下:

ls -la ~/.bashrc

应该看到:~/.bashrc -> ../dotfiles/bash/.bashrc

💡提示:stow bash的意思是:以当前目录为根,把 bash/ 包里的内容部署到当前目录的上一级(即 $HOME)。因为包里有 .bashrc,所以 ~/.bashrc就被创建了。

第二步:把其他配置也加进来

# Git 配置

mkdir -p ~/dotfiles/git

mv ~/.gitconfig ~/dotfiles/git/

stow git

# vim 配置

mkdir -p ~/dotfiles/vim

mv ~/.vimrc ~/dotfiles/vim/

stow vim

函数库和脚本

mkdir -p ~/dotfiles/bin/lib

mkdir -p ~/dotfiles/bin/scripts

注意:如果之前按上篇的建议放在 ~/bin/,直接移过来

mv ~/bin/lib ~/dotfiles/bin/

mv ~/bin/scripts ~/dotfiles/bin/

stow bin

第三步:初始化Git 仓库

cd ~/dotfiles

git init

git add .

git commit -m "初始提交:迁入 bash/git/vim/bin 配置"

 GitHub/Gitee 上创建一个名为 dotfiles 的空仓库

git remote add origin https://github.com/用户名/dotfiles.git

git push -u origin main

3.4 日常使用

配置更新后:

修改 ~/.bashrc(实际改的是 ~/dotfiles/bash/.bashrc

vim ~/dotfiles/bash/.bashrc

提交并推送

cd ~/dotfiles

git add .

git commit -m "更新 bashrc:增加新的alias"

git push

在新机器上还原:

克隆仓库到 ~/dotfiles

git clone https://github.com/用户名/dotfiles.git ~/dotfiles

cd ~/dotfiles

 stow 部署所有包

stow bash git vim bin

还原全部配置 

💡 **提示:**如果 ~/.bashrc 已经存在(不是之前由 stow 创建的),stow bash 会报错。可以手动备份后删除,或者用 stow --adopt bash  stow 接管现有文件(移动成软链接),但不会删除原文件内容。如果原文件有重要内容,--adopt 会安全处理。

四、处理敏感信息

4.1 哪些文件不能推到公开仓库

文件/目录

原因

~/.ssh/

包含私钥,推上去就等于把家门钥匙挂网上

~/.gitconfig 里的 user.password

有些 Git 凭证助手会把密码存在 ~/.gitconfig  ~/.git-credentials  ~/.config/git/credentials

~/.aws/

AWS 密钥

任何包含 API Token 的配置文件

比如 .vimrc 里的插件管理器 Token

4.2 安全的做法:模板 + 本地覆盖

思路:把配置文件里的敏感部分抽成"模板",模板推到仓库;本地再建一个"覆盖文件",存真实敏感信息,这个覆盖文件加入 .gitignore

.gitconfig为例:

~/dotfiles/git/.gitconfig(推到仓库):

[user]

name = 用户名字

# email  ~/.gitconfig_local 里配置(不入库)

[core]

editor = vim

[push]

default = current

~/.gitconfig_local(不推到仓库,存在本地):

[user]

email = 邮箱@example.com

~/.gitconfig末尾加上:

[include]

path = ~/.gitconfig_local

这样 Git 会同时读取两个文件,_local文件里的配置优先级更高。

把这个文件加入.gitignore

~/dotfiles/里创建 .gitignore

本地覆盖文件,不入库

.gitconfig_local

.ssh/

aws/

系统自动生成的文件

.DS_Store

4.3 SSH 密钥的处理

SSH 密钥绝对不能推到任何公开仓库。推荐做法:

1.生成新密钥(每台机器独立生成,不要复制私钥):

ssh-keygen -t ed25519 -C "邮箱"

2.公钥可以推到仓库(放在 ~/dotfiles/ssh/公钥.txt里,方便查看):

把公钥内容复制到仓库里(不是私钥!)

cat ~/.ssh/id_ed25519.pub > ~/dotfiles/ssh/我的公钥.txt

3.在新机器上重新生成密钥,然后把公钥加到 GitHub/Gitee  SSH Keys 设置里。

🚨警告:如果私钥曾经不小心推到了公开仓库,立即更换密钥!去 GitHub/Gitee 上删掉旧的公钥,重新生成一对。

五、写一键部署脚本

换机器时,希望一条命令完成所有操作?在~/dotfiles/里创建一个 install.sh

#!/bin/bash

# install.sh —— dotfiles 一键部署脚本

使用方法:bash install.sh

set -euo pipefail

DOTFILES_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"

BACKUP_DIR="$HOME/.dotfiles_backup/$(date +%Y%m%d_%H%M%S)"

print_info()echo -e "\033[0;32m[INFO]\033[0m $*"; }

print_warn()echo -e "\033[1;33m[WARN]\033[0m $*" >&2; }

print_error() { echo -e "\033[0;31m[ERROR]\033[0m $*" >&2; }

检查 stow 是否安装

if ! command -v stow &>/dev/null; then

print_error "stow 未安装,请先安装:sudo apt install stow(或对应发行版的命令)"

exit 1

fi

备份已存在的配置文件

backup_file() {

local file="$1"

if [[ -e "$file" ]] && [[ ! -L "$file" ]]; then

mkdir -p "$BACKUP_DIR"

mv"$file""$BACKUP_DIR/"

print_info "已备份:$file -> $BACKUP_DIR/"

fi

}

print_info "开始部署 dotfiles..."

print_info "dotfiles 目录:$DOTFILES_DIR"

要部署的包列表(和 ~/dotfiles/ 下的目录名对应)

PACKAGES=("bash""git""vim""bin")

for pkg in"${PACKAGES[@]}"do

if [[ ! -d "$DOTFILES_DIR/$pkg" ]]; then

print_warn "包 $pkg不存在,跳过"

continue

fi

print_info "部署包:$pkg"

备份目标位置已存在的文件(如果它不是软链接)

# stow 会自动处理,但我们先检查一下

find "$DOTFILES_DIR/$pkg" -type f -o -type d | whileread -r src; do

rel="${src#$DOTFILES_DIR/$pkg/}"

dest="$HOME/$rel"

backup_file "$dest"

done

 stow 部署

stow -d "$DOTFILES_DIR" -t "$HOME""$pkg"

print_success "包 $pkg部署完成"

done

额外操作:把 ~/bin 加入 PATH(如果还没加的话)

if [[ ":$PATH:" != *":$HOME/bin:"* ]]; then

print_info "请在 ~/.bashrc 末尾加上:"

echo'export PATH="$HOME/bin:$HOME/bin/scripts:$PATH"'

fi

print_success "部署完成!执行 source ~/.bashrc 生效"

保存后在新机器上这样用:

新机器上

git clone https://github.com/用户名/dotfiles.git ~/dotfiles

cd ~/dotfiles

bash install.sh

source ~/.bashrc

六、用 Git 裸仓库方案(进阶,可选)

如果不想依赖stow,可以用 Git 裸仓库直接在 $HOME里管理。

初始化:

 $HOME 里建一个裸仓库

git init --bare $HOME/.dotfiles

创建一个别名,方便操作

alias dotfiles='/usr/bin/git --git-dir="$HOME/.dotfiles" --work-tree="$HOME"'

不让 Git 显示未跟踪的文件(否则 $HOME 里所有文件都会显示)

dotfiles config --local status.showUntrackedFiles no

日常使用:

加文件

dotfiles add ~/.bashrc

dotfiles add ~/.vimrc

dotfiles commit -m "添加 bashrc vimrc"

dotfiles push

在新机器上还原:

git clone --bare https://github.com/用户名/dotfiles.git $HOME/.dotfiles

dotfiles checkout

如果提示冲突,先把已有的文件备份再checkout

dotfiles checkout 2>&1 | grep -E "^\s+" | xargs -I{} mv {} {}.backup

dotfiles checkout

💡提示:裸仓库方案的好处是不需要 stow,也不需要软链接。但命令比较绕,建议在熟悉 dotfiles 管理之后再尝试。

七、参考别人的dotfiles

不知道自己的dotfiles 该怎么组织?去看看别人是怎么管的。GitHub 上搜索dotfiles能找到几万个仓库,以下是几个高质量的参考:

仓库

特点

mathiasbynens/dotfiles

星标最多的 dotfiles 之一,macOS 向,但思路通用

holman/dotfiles

结构很有创意,用 topic/ 目录组织,值得参考思路

alrra/dotfiles

文档写得很好,适合新手参考

搜索 dotfiles linux

能找到很多 Linux 专属的配置

💡提示:参考别人的思路,但不要直接 fork 全套。每个人的需求不同,别人的配置里有很多不需要的东西,直接抄反而让环境变复杂。

八、本文速查表

stow 常用命令

命令

作用

stow bash

部署 bash/ 包(创建软链接)

stow -D bash

删除 bash/ 包的软链接(卸载)

stow -R bash

重新部署(先删再建,用于更新)

stow -n bash

模拟运行,不实际创建链接(调试用)

stow -t ~/target bash

部署到指定目录(而不是父目录)

dotfiles 目录结构模板

~/dotfiles/

├── bash/.bashrc

├── zsh/.zshrc

├── git/.gitconfig

├── vim/.vimrc

├── bin/lib/mylib.sh

├── bin/scripts/backup.sh

├── install.sh一键部署脚本

└── .gitignore排除敏感文件

敏感信息检查清单

·~/.ssh/已加入 .gitignore

·~/.gitconfig里没有明文密码(用 _local文件覆盖)

· API Token / 密钥已抽离到不入库的配置文件

·部署脚本里没有硬编码的敏感路径

💡提示:如果怀疑自己不小心把敏感信息推上去了,可以用 git log -p 检查历史记录,或者用 git filter-branch 彻底删除。

现在dotfiles搞定了,换机器不再痛苦。 但还有一个日常操作——远程连接 SSH 密钥登录、scp 传文件、rsync增量同步、跳板机配置,这些技能使用频率较高。

下篇预告:Linux SSH 远程连接——密钥免密登录与 scp/rsync 传文件》

最新文章

随机文章

基本 文件 流程 错误 SQL 调试
  1. 请求信息 : 2026-07-02 23:25:36 HTTP/2.0 GET : https://f.mffb.com.cn/a/501161.html
  2. 运行时间 : 0.100215s [ 吞吐率:9.98req/s ] 内存消耗:5,054.23kb 文件加载:140
  3. 缓存信息 : 0 reads,0 writes
  4. 会话信息 : SESSION_ID=39d143855e12656f8516f7a35271e18d
  1. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/public/index.php ( 0.79 KB )
  2. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/autoload.php ( 0.17 KB )
  3. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_real.php ( 2.49 KB )
  4. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/platform_check.php ( 0.90 KB )
  5. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/ClassLoader.php ( 14.03 KB )
  6. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/composer/autoload_static.php ( 4.90 KB )
  7. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper.php ( 8.34 KB )
  8. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/helper.php ( 2.19 KB )
  9. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/helper.php ( 1.47 KB )
  10. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/stubs/load_stubs.php ( 0.16 KB )
  11. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Exception.php ( 1.69 KB )
  12. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Facade.php ( 2.71 KB )
  13. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/deprecation-contracts/function.php ( 0.99 KB )
  14. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap.php ( 8.26 KB )
  15. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/polyfill-mbstring/bootstrap80.php ( 9.78 KB )
  16. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/Resources/functions/dump.php ( 1.49 KB )
  17. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-dumper/src/helper.php ( 0.18 KB )
  18. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/symfony/var-dumper/VarDumper.php ( 4.30 KB )
  19. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/App.php ( 15.30 KB )
  20. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-container/src/Container.php ( 15.76 KB )
  21. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/container/src/ContainerInterface.php ( 1.02 KB )
  22. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/provider.php ( 0.19 KB )
  23. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Http.php ( 6.04 KB )
  24. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Str.php ( 7.29 KB )
  25. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Env.php ( 4.68 KB )
  26. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/common.php ( 0.03 KB )
  27. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/helper.php ( 18.78 KB )
  28. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Config.php ( 5.54 KB )
  29. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/app.php ( 0.95 KB )
  30. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cache.php ( 0.78 KB )
  31. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/console.php ( 0.23 KB )
  32. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/cookie.php ( 0.56 KB )
  33. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/database.php ( 2.48 KB )
  34. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Env.php ( 1.67 KB )
  35. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/filesystem.php ( 0.61 KB )
  36. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/lang.php ( 0.91 KB )
  37. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/log.php ( 1.35 KB )
  38. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/middleware.php ( 0.19 KB )
  39. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/route.php ( 1.89 KB )
  40. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/session.php ( 0.57 KB )
  41. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/trace.php ( 0.34 KB )
  42. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/config/view.php ( 0.82 KB )
  43. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/event.php ( 0.25 KB )
  44. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Event.php ( 7.67 KB )
  45. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/service.php ( 0.13 KB )
  46. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/AppService.php ( 0.26 KB )
  47. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Service.php ( 1.64 KB )
  48. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Lang.php ( 7.35 KB )
  49. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/lang/zh-cn.php ( 13.70 KB )
  50. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/Error.php ( 3.31 KB )
  51. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/RegisterService.php ( 1.33 KB )
  52. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/services.php ( 0.14 KB )
  53. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/PaginatorService.php ( 1.52 KB )
  54. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ValidateService.php ( 0.99 KB )
  55. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/service/ModelService.php ( 2.04 KB )
  56. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Service.php ( 0.77 KB )
  57. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Middleware.php ( 6.72 KB )
  58. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/initializer/BootService.php ( 0.77 KB )
  59. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Paginator.php ( 11.86 KB )
  60. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-validate/src/Validate.php ( 63.20 KB )
  61. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/Model.php ( 23.55 KB )
  62. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Attribute.php ( 21.05 KB )
  63. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/AutoWriteData.php ( 4.21 KB )
  64. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/Conversion.php ( 6.44 KB )
  65. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/DbConnect.php ( 5.16 KB )
  66. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/ModelEvent.php ( 2.33 KB )
  67. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/concern/RelationShip.php ( 28.29 KB )
  68. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Arrayable.php ( 0.09 KB )
  69. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/contract/Jsonable.php ( 0.13 KB )
  70. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/model/contract/Modelable.php ( 0.09 KB )
  71. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Db.php ( 2.88 KB )
  72. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/DbManager.php ( 8.52 KB )
  73. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Log.php ( 6.28 KB )
  74. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Manager.php ( 3.92 KB )
  75. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerTrait.php ( 2.69 KB )
  76. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/log/src/LoggerInterface.php ( 2.71 KB )
  77. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cache.php ( 4.92 KB )
  78. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/psr/simple-cache/src/CacheInterface.php ( 4.71 KB )
  79. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/helper/Arr.php ( 16.63 KB )
  80. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/driver/File.php ( 7.84 KB )
  81. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/cache/Driver.php ( 9.03 KB )
  82. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/CacheHandlerInterface.php ( 1.99 KB )
  83. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/Request.php ( 0.09 KB )
  84. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Request.php ( 55.78 KB )
  85. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/middleware.php ( 0.25 KB )
  86. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Pipeline.php ( 2.61 KB )
  87. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/TraceDebug.php ( 3.40 KB )
  88. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/middleware/SessionInit.php ( 1.94 KB )
  89. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Session.php ( 1.80 KB )
  90. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/driver/File.php ( 6.27 KB )
  91. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/SessionHandlerInterface.php ( 0.87 KB )
  92. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/session/Store.php ( 7.12 KB )
  93. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Route.php ( 23.73 KB )
  94. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleName.php ( 5.75 KB )
  95. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Domain.php ( 2.53 KB )
  96. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleGroup.php ( 22.43 KB )
  97. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Rule.php ( 26.95 KB )
  98. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/RuleItem.php ( 9.78 KB )
  99. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/route/app.php ( 1.72 KB )
  100. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/Route.php ( 4.70 KB )
  101. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/dispatch/Controller.php ( 4.74 KB )
  102. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/route/Dispatch.php ( 10.44 KB )
  103. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/controller/Index.php ( 4.81 KB )
  104. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/app/BaseController.php ( 2.05 KB )
  105. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/facade/Db.php ( 0.93 KB )
  106. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/connector/Mysql.php ( 5.44 KB )
  107. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/PDOConnection.php ( 52.47 KB )
  108. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Connection.php ( 8.39 KB )
  109. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/ConnectionInterface.php ( 4.57 KB )
  110. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/builder/Mysql.php ( 16.58 KB )
  111. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Builder.php ( 24.06 KB )
  112. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseBuilder.php ( 27.50 KB )
  113. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/Query.php ( 15.71 KB )
  114. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/BaseQuery.php ( 45.13 KB )
  115. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TimeFieldQuery.php ( 7.43 KB )
  116. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/AggregateQuery.php ( 3.26 KB )
  117. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ModelRelationQuery.php ( 20.07 KB )
  118. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ParamsBind.php ( 3.66 KB )
  119. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/ResultOperation.php ( 7.01 KB )
  120. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/WhereQuery.php ( 19.37 KB )
  121. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/JoinAndViewQuery.php ( 7.11 KB )
  122. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/TableFieldInfo.php ( 2.63 KB )
  123. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-orm/src/db/concern/Transaction.php ( 2.77 KB )
  124. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/driver/File.php ( 5.96 KB )
  125. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/LogHandlerInterface.php ( 0.86 KB )
  126. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/log/Channel.php ( 3.89 KB )
  127. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/event/LogRecord.php ( 1.02 KB )
  128. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-helper/src/Collection.php ( 16.47 KB )
  129. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/facade/View.php ( 1.70 KB )
  130. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/View.php ( 4.39 KB )
  131. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Response.php ( 8.81 KB )
  132. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/response/View.php ( 3.29 KB )
  133. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/Cookie.php ( 6.06 KB )
  134. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-view/src/Think.php ( 8.38 KB )
  135. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/framework/src/think/contract/TemplateHandlerInterface.php ( 1.60 KB )
  136. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/Template.php ( 46.61 KB )
  137. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/driver/File.php ( 2.41 KB )
  138. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-template/src/template/contract/DriverInterface.php ( 0.86 KB )
  139. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/runtime/temp/067d451b9a0c665040f3f1bdd3293d68.php ( 11.98 KB )
  140. /yingpanguazai/ssd/ssd1/www/f.mffb.com.cn/vendor/topthink/think-trace/src/Html.php ( 4.42 KB )
  1. CONNECT:[ UseTime:0.000560s ] mysql:host=127.0.0.1;port=3306;dbname=f_mffb;charset=utf8mb4
  2. SHOW FULL COLUMNS FROM `fenlei` [ RunTime:0.000696s ]
  3. SELECT * FROM `fenlei` WHERE `fid` = 0 [ RunTime:0.000247s ]
  4. SELECT * FROM `fenlei` WHERE `fid` = 63 [ RunTime:0.000290s ]
  5. SHOW FULL COLUMNS FROM `set` [ RunTime:0.000496s ]
  6. SELECT * FROM `set` [ RunTime:0.000195s ]
  7. SHOW FULL COLUMNS FROM `article` [ RunTime:0.000497s ]
  8. SELECT * FROM `article` WHERE `id` = 501161 LIMIT 1 [ RunTime:0.000842s ]
  9. UPDATE `article` SET `lasttime` = 1783005936 WHERE `id` = 501161 [ RunTime:0.012643s ]
  10. SELECT * FROM `fenlei` WHERE `id` = 67 LIMIT 1 [ RunTime:0.000667s ]
  11. SELECT * FROM `article` WHERE `id` < 501161 ORDER BY `id` DESC LIMIT 1 [ RunTime:0.000998s ]
  12. SELECT * FROM `article` WHERE `id` > 501161 ORDER BY `id` ASC LIMIT 1 [ RunTime:0.001130s ]
  13. SELECT * FROM `article` WHERE `id` < 501161 ORDER BY `id` DESC LIMIT 10 [ RunTime:0.002162s ]
  14. SELECT * FROM `article` WHERE `id` < 501161 ORDER BY `id` DESC LIMIT 10,10 [ RunTime:0.002775s ]
  15. SELECT * FROM `article` WHERE `id` < 501161 ORDER BY `id` DESC LIMIT 20,10 [ RunTime:0.002548s ]
0.101887s