使用 wget 下载网站图片时,能不能保留原始时间属性?

在整理旧网站、备份博客图片、迁移 WordPress 站点素材时,经常会遇到一个问题:用命令行下载图片以后,本地文件的时间会不会变成“下载时间”?有没有办法尽量保留图片原来的时间属性? 答案是:可以,但要看你说的“原始时间”具体指什么。 对于 wget 来说,它能够保留的主要是服务器返回的文件修改时间,也就是 HTTP 响应头里的 Last-Modified 时间。只要服务器正确提供这个时间,wget 就可以把本地文件的修改时间设置成服务器上的时间。 但是,wget 并不能保证恢复图片真正的拍摄时间,也不能保证恢复 WordPress 后台里的上传时间。它只是尽量保留“远程文件的修改时间”。 一、最核心的参数:-N wget 中和时间戳有关的核心参数是: -N 是 –timestamping 的简写,意思是启用时间戳检查。 例如下载一张图片: 如果服务器返回了这张图片的 Last-Modified 信息,wget 下载后会把本地文件的修改时间设置成这个远程时间,而不是单纯使用当前下载时间。 二、批量下载图片时也可以保留时间 如果有一个图片地址列表,例如 urls.txt: 可以这样批量下载: 这里: 表示保留远程时间戳; 表示从 urls.txt 文件中读取下载地址。 这是比较干净、稳定的批量下载方式,适合先从网页或 WordPress 媒体库中提取图片地址,再统一下载。 三、下载整个页面中的图片 如果只是想下载某个网页中用到的图片,可以使用: 这条命令的含义是: 例如: 这样会把页面中引用到的图片下载下来,并尽量保留远程文件时间。 不过这种方式有一个缺点:它下载的是“页面需要显示的资源”,不一定只包含你想要的原图。有些网站会引用 logo、背景图、按钮图、缩略图等,这些也可能一起被下载下来。 四、WordPress 图片需要注意缩略图问题 WordPress …

从 10GB 到 512MB:一次数据库内存回收带来的整机重生

——PVE + Docker + Web 应用场景下的真实优化案例 一、问题背景 在一台运行于 Proxmox VE(PVE)上的 Linux 虚拟机中,同时部署了多种服务,包括: 该虚拟机分配了约 23GB 内存,长期观察到: 初步怀疑数据库内存配置不合理。 二、关键发现:InnoDB Buffer Pool 被设置为 10GB 通过查询数据库内部参数发现: 结果显示: 这是一套典型的数据库专用服务器配置,而当前系统实际上是一个多服务混合运行的 Web 主机。 在这种环境下: 其直接后果是: 三、目标:尽可能小,但不影响实际性能 该系统的目标是: 在不影响 Web 应用体验的前提下,将数据库内存压缩到合理的下限。 最终采用如下配置: 设计原则: 四、效果:数据库从“内存黑洞”变为“可控组件” 重启后验证: 数据库进程内存占用: 与 512MB 的 buffer pool 高度一致,说明配置准确生效。 五、整机内存结构发生根本变化 优化后系统状态: 含义: 本质变化是: 从“数据库私有缓存主导”→ “操作系统统一缓存主导” …

利用 Python 与 PyCharm 实现 IP 地理位置分析与可视化(附断点续跑与 Git 管理实践)

在网络安全、数据分析或运营场景中,经常需要对海量 IP 地址进行地理位置归类和可视化展示。结合 Python 强大的数据处理能力与 PyCharm 的图形化开发环境,可以高效地完成这类任务,并通过 Git 管理整个开发过程中的版本变更。 本文将围绕以下几个方面展开: 一、任务目标概览 该项目旨在处理一个包含约 1.5 万个 IP 地址的文件,目标是: 二、核心技术栈 三、项目结构与脚本实现 项目结构建议如下: GeoIPExplorer/├── input/│ └── ip_list.txt # IP 地址列表├── output/│ ├── ip_geolocation.csv # 查询结果│ ├── city_counts.csv # 城市统计│ ├── ip_heatmap.html # 热力图│ └── visited_ips.txt # 已查询 IP 记录(断点续跑用)├── ip_geolocation_analysis.py # 主脚本└── .gitignore 核心脚本功能(简略展示) …

MySQL 中为何应创建 root 以外的用户账户?

在日常的数据库管理和网站部署过程中,很多初学者或小型项目常常直接使用 root 用户连接 MySQL 数据库。然而,这种做法存在较大的安全隐患和管理难题。本文将从安全性、权限控制、审计追踪等角度出发,介绍为什么应在 MySQL(或 MariaDB)中创建 root 以外的用户,并为不同用途创建专属账户。 一、root 用户的特性与风险 MySQL 中的 root 用户是超级管理员,拥有最高级别的数据库权限,包括: 一旦 root 密码泄露,攻击者可以完全控制数据库系统,造成严重后果。将 root 用户暴露给应用程序或 Web 前端,更是极为危险的做法。 二、最小权限原则(Principle of Least Privilege) 在信息安全领域,「最小权限原则」是一项基本理念。即每个账号仅获得完成其任务所必需的最小权限,避免权限过高带来的安全威胁。 在 MySQL 中,可以为不同应用、程序或用户创建独立的账户,并根据其用途授予精确的权限,例如: 通过权限细分,既满足业务需要,又控制潜在风险。 三、为不同用途创建专用账户的好处 1. 提升系统安全性 2. 权限细化与隔离 3. 审计与追踪方便 4. 限制来源 IP 四、实际应用场景举例 账号用途 推荐权限 主机限制 网站后端程序 SELECT, INSERT, UPDATE, DELETE …

Apache & PHP 重置完整教程(通用步骤)

在长期维护 Linux 服务器(如 Debian 或 Ubuntu)环境时,Apache 和 PHP 经过多次配置、切换模块、安装扩展后,往往会出现配置混乱、冲突、或无法正常解析 PHP 文件的问题。为了快速恢复一个干净、可控的环境,可采用「卸载重装」方式彻底重置 Apache 和 PHP,仅保留必要的文件和数据库。 以下为通用重置步骤,适用于需要清理历史配置、解决解析混乱、重新部署应用场景。 ✅ 注意事项 🔥 重置步骤 🟢 1. 卸载 Apache sudo apt remove –purge apache2 apache2-utils apache2-bin apache2.2-common -y 清理 Apache 配置文件: sudo rm -rf /etc/apache2 🟢 2. 卸载 PHP 及所有模块 sudo apt remove –purge php* -y …

MongoDB 启动失败案例分析:Exit Code 62 错误详解与 setFeatureCompatibilityVersion 的隐藏坑

在一次 Rocket.Chat + MongoDB 的 Docker 升级过程中,遇到 MongoDB 无法启动并自动退出的问题。最终确认,是因为 未设置 setFeatureCompatibilityVersion(FCV)导致的启动失败。这篇文章将完整记录问题日志、错误分析与解决过程,希望为大家避坑提供参考。 🧩 问题现象 在使用 Docker 启动 MongoDB 7.0 时,容器没有正常运行,而是立即触发了 shutdown 流程。日志如下: jsonCopyEdit{“msg”:”Shutting down the IndexBuildsCoordinator”} {“msg”:”Shutting down the storage engine”} {“msg”:”WiredTiger closed”} {“msg”:”Now exiting”} {“msg”:”Shutting down”,”attr”:{“exitCode”:62}} 最后一行: jsonCopyEdit”exitCode”:62 ❓ Exit Code 62 是什么? exitCode: 62 在 MongoDB 中表示: EX_UNCAUGHT (62)MongoDB …

MongoDB 升级后需设置的关键项:Feature Compatibility Version(FCV)

在使用 Docker 或其他方式将 MongoDB 升级到大版本(如 6.x ➜ 7.x)后,你可能会遇到一个关键步骤: jsCopyEditdb.adminCommand({ setFeatureCompatibilityVersion: “7.0”, confirm: true }) 这条命令并不是可有可无的配置,而是关系到系统稳定性和未来可扩展性的重要操作。今天这篇文章,就来介绍什么是 Feature Compatibility Version(FCV),为什么我们需要设置它,以及该注意的事项。 🔧 什么是 Feature Compatibility Version? Feature Compatibility Version(简称 FCV)是 MongoDB 提供的一种数据结构与行为兼容机制。它的核心目的是: 让你在升级 MongoDB 后,仍然能够选择保留旧版本的数据格式与运行逻辑,直到你确认一切稳定,再启用新版本特性。 FCV 控制的内容包括: ⚙️ 为什么需要手动设置 FCV? MongoDB 升级后,默认并不会启用新版本的全部特性。比如,你从 MongoDB 6.0 升级到了 7.0,即便运行的是 7.0 的二进制版本,系统内部仍然以 6.0 的方式运行。 这时候,如果你不设置 FCV: ✅ …

ASCII – 维基百科

https://zh.wikipedia.org/wiki/ASCII ASCII(发音: /ˈæski/ ASS-kee[1],American Standard Code for Information Interchange,美国信息交换标准代码)是基于拉丁字母的一套电脑编码系统。它主要用于显示现代英语,而其扩展版本延伸美国标准信息交换码则可以部分支持其他西欧语言,并等同于国际标准ISO/IEC 646。1968年版ASCII编码速见表 美国信息交换标准代码是这套编码系统的传统命名,互联网号码分配局现在更倾向于使用它的新名字US-ASCII[2]。 美国信息交换标准代码是美国电气和电子工程师协会里程碑之一。 目录 1概览 2控制字符 3可显示字符 4缺点 5参见 6参考资料 概览 ASCII 由电报码发展而来。第一版标准发布于1963年[3][4],1967年经历了一次主要修订[5][6],最后一次更新则是在1986年,至今为止共定义了128个字符;其中33个字符无法显示(一些终端提供了扩展,使得这些字符可显示为诸如笑脸、扑克牌花式等8-bit符号),且这33个字符多数都已是陈废的控制字符。控制字符的用途主要是用来操控已经处理过的文字。在33个字符之外的是95个可显示的字符。用键盘敲下空白键所产生的空白字符也算1个可显示字符(显示为空白)。 控制字符 说明: Unicode表示法:当我们想在画面或纸张上表示这些控制字符时,就会显示成这个样子。过于老旧的系统或浏览器可能会看不到。使用微软任一中文输入法,输入`U2400即可看到␀,输入`U2401可看到␁,依此类推。 脱出字符表示法:通常用于终端连线(例如Telnet通信协议),以脱出字符^开头,再接一个符号,用来让这些控制字符得以在画面上显现。虽然看起来是两个字符,但在终端上实际只有一个字符。在绝大部分的终端系统中,包括Windows的命令提示字符(cmd.exe)、Linux和FreeBSD,都可用Ctrl代表脱出字符,输入想要的ASCII控制字符。例如想输入空字符,就要输入Ctrl+2,而非^@,后者会显示成两字符,前者只会显示成一字符。 二进制 十进制 十六进制 缩写 Unicode表示法 脱出字符表示法 名称/意义 0000 0000 0 00 NUL ␀ ^@ 空字符(Null) 0000 0001 1 01 SOH ␁ ^A 标题开始 0000 0010 2 02 STX ␂ ^B 本文开始 0000 0011 3 …

Php学习15张思维导图

15 张思维导图来快速学习 PHP 语言基础。 PHP 简介(点击图片查看大图) PHP安装(点击图片查看大图) PHP语法(点击图片查看大图) PHP数据类型(点击图片查看大图) PHP变量(点击图片查看大图) PHP数组(点击图片查看大图) PHP常量(点击图片查看大图) PHP超级全局变量(点击图片查看大图) PHP魔术变量(点击图片查看大图) PHP运算符(点击图片查看大图) PHP流程语句(点击图片查看大图) PHP函数(点击图片查看大图) PHP命名空间(点击图片查看大图) PHP面向对象(点击图片查看大图) PHP错误与异常(点击图片查看大图) 来自微信公众号:up2048 原文:https://www.runoob.com/w3cnote/15-php-mind-mapping.html