标签归档:linux

Linux 如何全局搜索文件内容?grep 递归查找指定字符串

在 Linux 下,可以使用 grep 全局递归搜索文件内容,查找是否包含 ?>hello。

1. 搜索整个服务器

参数说明:

  • -r:递归搜索所有子目录
  • -n:显示匹配内容所在行号
  • -F:按普通字符串匹配,不使用正则表达式
  • 2>/dev/null:忽略权限不足等错误信息

2. 只搜索 PHP 文件(推荐)

如果你怀疑 PHP 项目被植入恶意代码,建议这样搜索:

这条命令只显示包含目标字符串的 PHP 文件路径。

3. 搜索所有文件,包括隐藏文件

其中 -a 表示将二进制文件也按文本处理。

4. 同时搜索多种可疑内容

注意,这些函数本身不一定是恶意代码,需要结合上下文判断。

我的建议: 如果你的服务器运行的是 PHP 网站,优先执行:

另外,如果 ?>hello 是 PHP 文件末尾突然多出来的内容,尤其是你自己没有写过的代码,就要警惕网站文件被篡改。

你这个 ?>hello 是网站页面突然输出的内容,还是怀疑服务器被植入了恶意代码?两种情况排查方法不一样。

Linux rsync 文件同步教程:跨服务器传输、断点续传与后台运行

下面是 两台宝塔服务器传输 14GB 文件的完整命令,从安装到传输、断点续传、校验,一步一步操作。

适用于 Ubuntu 系统,推荐使用 rsync + tmux。

第一步:旧服务器安装 rsync

登录旧服务器 A 的宝塔终端,执行:

安装完成后检查:

第二步:新服务器安装 rsync 和 tmux

登录新服务器 B 的宝塔终端,执行:

第三步:创建接收目录

在新服务器 B 执行:

这里 /www/backup 是示例目录,你可以换成实际网站目录。

第四步:创建后台会话

在新服务器 B 执行:

这样即使关闭宝塔终端,文件传输也不会中断。

第五步:开始传输(核心命令)

继续在新服务器的 tmux 终端执行:

需要修改的地方:

  • 旧服务器IP:替换为旧服务器公网 IP。
  • 22:替换为旧服务器实际 SSH 端口。
  • 第一个 /www/backup/:旧服务器文件夹。
  • 第二个 /www/backup/:新服务器接收文件夹。

首次连接输入 yes,再输入旧服务器 SSH 密码(前提是允许密码登录)。

第六步:退出终端,继续后台传输

按顺序操作:

  1. 按 Ctrl + B。
  2. 松开按键,再按 D。

需要重新查看传输进度时:

第七步:如果传输中断

重新进入 tmux:

如果原传输进程已经结束,则重新执行第五步的 rsync 命令。

-P 会保留未完成的文件,重新运行时可以利用已传输的数据继续同步。

第八步:传输完成后校验

在新服务器执行:

这个命令不会修改文件,而是检查两台服务器的文件差异。

最终需要执行的命令汇总

旧服务器 A 复制

新服务器 B 复制

在 tmux 中执行传输 复制

注意: 14GB 少量大文件不建议使用 -z 压缩,尤其是 ZIP、RAR、MP4 等已经压缩的文件。此方案能够直接在两台云服务器之间传输,无需经过本地电脑。