{"id":1255,"date":"2026-09-29T22:36:46","date_gmt":"2026-09-29T22:36:46","guid":{"rendered":"https:\/\/virtualserversvps.com\/blog\/?p=1255"},"modified":"2026-09-29T22:36:46","modified_gmt":"2026-09-29T22:36:46","slug":"logrotate-compress-retention-disk-space-vps","status":"publish","type":"post","link":"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/","title":{"rendered":"Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">A full disk is the most common avoidable outage on a small VPS, and logs are almost always the culprit. The default logrotate configuration ships with retention tuned for generous enterprise disks, not for a 25 GB instance running nginx, PHP-FPM and a database. This article shows how to compress intelligently, set retention by both count and total size, and verify that rotation is actually reclaiming space instead of silently failing.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Find out what is actually consuming disk<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Before changing policy, establish where the space went. Log directories are frequently larger than owners expect, and a single runaway file often dominates.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>du -xh --max-depth=2 \/var\/log | sort -h | tail -15\n\n# ten largest files anywhere under \/var\nfind \/var\/log -type f -printf '%s\\t%p\\n' | sort -n | tail -10 | numfmt --field=1 --to=iec\n\n# is anything still holding a deleted file open?\nlsof +L1 2&gt;\/dev\/null | awk '$7 &gt; 100000000 {print $7, $9}'<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">That last command matters: deleting a log file a process still has open frees nothing until the process restarts. Rotation must signal the process, which logrotate does via <code>postrotate<\/code>.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A sane baseline policy<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">The global file sets defaults; per-service overrides refine them. Compression should be the default, with delayed compression so the freshly rotated file stays greppable for a short while.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \/etc\/logrotate.d\/nginx\n\/var\/log\/nginx\/*.log {\n    daily\n    rotate 14\n    missingok\n    notifempty\n    compress\n    delaycompress\n    compresscmd \/usr\/bin\/zstd\n    uncompresscmd \/usr\/bin\/unzstd\n    compressext .zst\n    dateext\n    dateformat -%Y%m%d\n    sharedscripts\n    create 0640 www-data adm\n    postrotate\n        [ -f \/run\/nginx.pid ] &amp;&amp; kill -USR1 $(cat \/run\/nginx.pid)\n    endscript\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>dateext<\/code> prevents the numeric-shuffle churn and makes retention auditing trivial. <code>delaycompress<\/code> keeps yesterday&#8217;s file plain-text so ordinary tooling still works during incidents.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Compression: zstd vs gzip vs xz<\/h2>\n\n\n\n<figure class=\"wp-block-table\"><table><thead><tr><th>Codec<\/th><th>Ratio<\/th><th>Speed<\/th><th>CPU per rotation<\/th><\/tr><\/thead><tbody><tr><td>gzip -6<\/td><td>~10x<\/td><td>medium<\/td><td>moderate<\/td><\/tr><tr><td>zstd -3<\/td><td>~10x<\/td><td>very fast<\/td><td>low<\/td><\/tr><tr><td>zstd -19<\/td><td>~14x<\/td><td>slow<\/td><td>high<\/td><\/tr><tr><td>xz -6<\/td><td>~16x<\/td><td>very slow<\/td><td>very high<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">On a low-core VPS, zstd at level 3 or 6 is the sweet spot: near-gzip ratios at a fraction of the CPU, so a nightly rotation does not spike load. Reserve xz for archives you compress once and query rarely. Verify a codec is available before switching, or logrotate will fail the whole stanza:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>command -v zstd zstdcat xz\n\n# dry-run the new config across all matching logs\nlogrotate --debug \/etc\/logrotate.d\/nginx\n\n# force a rotation now, outside the cron window\nlogrotate --force \/etc\/logrotate.d\/nginx<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Retention by size, not just by count<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\"><code>rotate N<\/code> caps the number of archives, but a file that grows tenfold suddenly means ten times the disk. Cap total size too, using <code>maxsize<\/code> to rotate early.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># rotate early if the file exceeds 200 MB, regardless of count\n\/var\/log\/app\/*.log {\n    daily\n    rotate 10\n    maxsize 200M\n    compress\n    copytruncate      # use when the app cannot reopen its log fd\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\"><code>copytruncate<\/code> is convenient but has a race window where a few lines can be lost between copy and truncate; prefer <code>postrotate<\/code> + signal whenever the application supports reopening its file descriptors.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">The journald side of the equation<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">On systemd hosts, <code>\/var\/log\/journal<\/code> grows independently of logrotate and is a frequent hidden consumer. Cap it explicitly:<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># \/etc\/systemd\/journald.conf\nSystemMaxUse=200M\nSystemMaxFileSize=50M\nMaxRetentionSec=2week\n\nsystemctl restart systemd-journald\njournalctl --disk-usage\njournalctl --vacuum-size=200M<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Per-application retention that matches value<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Not every log deserves the same lifespan. Access logs are forensic evidence; debug logs from an application are transient noise. Splitting retention by value is how you keep two weeks of the first and two days of the second on the same disk.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># high-value: keep, compress well, never lose\n\/var\/log\/nginx\/*.log {\n    daily\n    rotate 30\n    compress\n    delaycompress\n    dateext\n}\n\n# noisy debug output: short window, aggressive cap\n\/var\/log\/app\/debug.log {\n    daily\n    rotate 3\n    maxsize 100M\n    compress\n    copytruncate\n    missingok\n    notifempty\n}<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Two details matter here. <code>notifempty<\/code> prevents rotation churn on logs that stayed silent. And mixing <code>dateext<\/code> only on the high-value stanza keeps the debug directory simple while giving the forensic logs stable, sortable filenames.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Rotation timing and the cron window<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">logrotate is normally invoked by a systemd timer once per day. If you add a fresh <code>\/etc\/logrotate.d<\/code> stanza after that window has passed, nothing happens until tomorrow \u2014 the single most common reason a new policy appears to be ignored.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># who triggers rotation on modern Debian\/Ubuntu\nsystemctl list-timers logrotate.timer\n\n# inspect what the daily job actually iterates over\ngrep -v '^#' \/etc\/logrotate.conf\n\n# test a single stanza without waiting for the timer\nlogrotate --force --verbose \/etc\/logrotate.d\/nginx<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Use <code>--force<\/code> sparingly in production: it rotates immediately regardless of the size or age conditions, which is exactly what you want while validating a config and exactly what you do not want on a live database host mid-day.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Preventing rotation from failing silently<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">A misconfigured stanza fails quietly and leaves the previous archives intact, so disk usage climbs with no obvious error. logrotate writes its state to a status file; a healthy run updates the timestamp, and a repeated failure shows a stale entry.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># last successful rotation per log\ncat \/var\/lib\/logrotate\/status | grep \/var\/log\/nginx\n\n# capture errors from a manual run\nlogrotate --verbose --debug \/etc\/logrotate.d\/nginx 2&gt;&amp;1 | tail -20\n\n# catch failures in a timer-driven setup\nsystemctl status logrotate.service --no-pager<\/code><\/pre>\n\n\n\n<ul class=\"wp-block-list\"><li>Missing <code>compresscmd<\/code> binary &rarr; whole stanza skipped.<\/li><li>Bad glob with no <code>missingok<\/code> &rarr; stanza errors and stops.<\/li><li><code>postrotate<\/code> signal sent to a stopped service &rarr; old file kept open, space not reclaimed.<\/li><li>Permissions on the <code>create<\/code> line wrong for the daemon &rarr; app cannot write after the first rotation.<\/li><\/ul>\n\n\n\n<h2 class=\"wp-block-heading\">Reclaiming space from archives you will never read<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Old compressed archives are the cheapest thing to delete, so build the habit of inspecting before purging. Because <code>dateext<\/code> encodes the date in the filename, retention becomes a simple text filter.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code># how much space is sitting in archives, by month\ndu -ch \/var\/log\/nginx\/*.zst 2&gt;\/dev\/null | tail -1\n\n# list archives older than 30 days before removing anything\nfind \/var\/log -name '*.zst' -mtime +30 -printf '%TY-%Tm-%Td %10s %p\\n' | sort\n\n# grep a rotated log without decompressing to disk\nzstdcat \/var\/log\/nginx\/access.log-20260101.zst | grep ' 500 '<\/code><\/pre>\n\n\n\n<p class=\"wp-block-paragraph\">Searching compressed logs in place with <code>zstdcat<\/code> keeps the convenience of plain text without paying the disk cost of decompression. This is the reason <code>delaycompress<\/code> exists: the most recent archive stays readable by ordinary tools during the window when you are most likely to need it.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">A lightweight disk-capacity guard<\/h2>\n\n\n\n<p class=\"wp-block-paragraph\">Even a perfect policy benefits from an independent watchdog. A tiny script on a timer that alerts when <code>\/var<\/code> crosses a threshold turns a future outage into a routine notification.<\/p>\n\n\n\n<pre class=\"wp-block-code\"><code>#!\/bin\/sh\n# \/usr\/local\/bin\/disk-guard.sh\nTHRESH=80\nUSE=$(df --output=pcent \/var | tail -1 | tr -d ' %')\n[ \"$USE\" -ge \"$THRESH\" ] &amp;&amp; \\\n  logger -t disk-guard \"WARNING: \/var at ${USE}%\" &amp;&amp; \\\n  du -xh --max-depth=1 \/var\/log | sort -h | tail -5 | logger -t disk-guard<\/code><\/pre>\n\n\n\n<h2 class=\"wp-block-heading\">Summary<\/h2>\n\n\n\n<ul class=\"wp-block-list\"><li>Compress with zstd at level 3-6; delay compression so the newest archive stays greppable.<\/li><li>Cap both count (<code>rotate<\/code>) and size (<code>maxsize<\/code>) \u2014 one without the other is a trap.<\/li><li>Bound <code>systemd-journald<\/code> separately; it ignores logrotate entirely.<\/li><li>Alert at 80% of <code>\/var<\/code> rather than discovering the problem from a 500 error.<\/li><\/ul>\n\n\n\n<p class=\"wp-block-paragraph\">Pairing a tight rotation policy with a capacity alert is the difference between a boring log directory and a 03:00 outage. If disk pressure persists after both are in place, the instance may simply be undersized \u2014 the <a href=\"https:\/\/virtualserversvps.com\/\">plan comparison<\/a> is worth a look, and the <a href=\"https:\/\/virtualserversvps.com\/blog\/\">blog<\/a> covers the related disk-reclamation procedures.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>A full disk is the most common avoidable outage on a small VPS, and logs are almost always the culprit. The default logrotate configuration ships with retention tuned for generous&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"iawp_total_views":0,"footnotes":""},"categories":[1],"tags":[],"class_list":["post-1255","post","type-post","status-publish","format-standard","hentry","category-vps-guides-tutorials"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v26.1 (Yoast SEO v26.1) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic - Virtual Servers VPS Blog<\/title>\n<meta name=\"description\" content=\"A full disk is the most common avoidable outage on a small VPS, and logs are almost always the culprit. The default logrotate configuration ships with\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic\" \/>\n<meta property=\"og:description\" content=\"Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic\" \/>\n<meta property=\"og:url\" content=\"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/\" \/>\n<meta property=\"og:site_name\" content=\"Virtual Servers VPS Blog\" \/>\n<meta property=\"article:published_time\" content=\"2026-09-29T22:36:46+00:00\" \/>\n<meta name=\"author\" content=\"Virtual-Servers-Vps-Editor\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Virtual-Servers-Vps-Editor\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"6 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/\",\"name\":\"Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic - Virtual Servers VPS Blog\",\"isPartOf\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\"},\"datePublished\":\"2026-09-29T22:36:46+00:00\",\"author\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\"},\"description\":\"A full disk is the most common avoidable outage on a small VPS, and logs are almost always the culprit. The default logrotate configuration ships with\",\"breadcrumb\":{\"@id\":\"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/virtualserversvps.com\/blog\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#website\",\"url\":\"https:\/\/virtualserversvps.com\/blog\/\",\"name\":\"Virtual Servers VPS Blog\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Person\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0\",\"name\":\"Virtual-Servers-Vps-Editor\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g\",\"caption\":\"Virtual-Servers-Vps-Editor\"},\"sameAs\":[\"https:\/\/virtualserversvps.com\/blog\"],\"url\":\"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic - Virtual Servers VPS Blog","description":"A full disk is the most common avoidable outage on a small VPS, and logs are almost always the culprit. The default logrotate configuration ships with","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/","og_locale":"en_US","og_type":"article","og_title":"Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic","og_description":"Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic","og_url":"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/","og_site_name":"Virtual Servers VPS Blog","article_published_time":"2026-09-29T22:36:46+00:00","author":"Virtual-Servers-Vps-Editor","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Virtual-Servers-Vps-Editor","Est. reading time":"6 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/","url":"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/","name":"Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic - Virtual Servers VPS Blog","isPartOf":{"@id":"https:\/\/virtualserversvps.com\/blog\/#website"},"datePublished":"2026-09-29T22:36:46+00:00","author":{"@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0"},"description":"A full disk is the most common avoidable outage on a small VPS, and logs are almost always the culprit. The default logrotate configuration ships with","breadcrumb":{"@id":"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/virtualserversvps.com\/blog\/logrotate-compress-retention-disk-space-vps\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/virtualserversvps.com\/blog\/"},{"@type":"ListItem","position":2,"name":"Log Rotation on a VPS: Compression, Retention Windows and Reclaiming Disk Before You Panic"}]},{"@type":"WebSite","@id":"https:\/\/virtualserversvps.com\/blog\/#website","url":"https:\/\/virtualserversvps.com\/blog\/","name":"Virtual Servers VPS Blog","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/virtualserversvps.com\/blog\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Person","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/82a299a8284a66ff49f97c74684724a0","name":"Virtual-Servers-Vps-Editor","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/virtualserversvps.com\/blog\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/d820b15f1cd028e97610d9adf536df7be5cb6423869967037d468d5355fa003f?s=96&d=mm&r=g","caption":"Virtual-Servers-Vps-Editor"},"sameAs":["https:\/\/virtualserversvps.com\/blog"],"url":"https:\/\/virtualserversvps.com\/blog\/author\/virtualserversvps\/"}]}},"_links":{"self":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1255","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/comments?post=1255"}],"version-history":[{"count":1,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1255\/revisions"}],"predecessor-version":[{"id":1256,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/posts\/1255\/revisions\/1256"}],"wp:attachment":[{"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/media?parent=1255"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/categories?post=1255"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/virtualserversvps.com\/blog\/wp-json\/wp\/v2\/tags?post=1255"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}