{"id":563,"date":"2017-09-23T18:30:04","date_gmt":"2017-09-23T15:30:04","guid":{"rendered":"https:\/\/galaxydata.ru\/community\/?p=563"},"modified":"2025-07-22T23:51:03","modified_gmt":"2025-07-22T20:51:03","slug":"ploop-auto-compact-script-for-openvz-nodes-compact-sh","status":"publish","type":"post","link":"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563","title":{"rendered":"Ploop auto-compact script for OpenVZ nodes: compact.sh"},"content":{"rendered":"<h3 id=\"Problem:\" >Section 1. <strong>Problem:<\/strong><\/h3>\n<p>Ploop has a minor issue arising from dynamic resizing involving file deletion and no space on the hardware node.<\/p>\n<ul>\n<li>When a file is deleted inside a container, the host node does not automatically reclaim the space. (Bug 3008)<\/li>\n<li>When a host node is out of space, files inside the container can become corrupted.<\/li>\n<\/ul>\n<h3 id=\"Solution\" >Section 2. <strong>Solution<\/strong><\/h3>\n<p>This is where the compact.sh script comes in handy.\u00a0 I have written this script to resolve the issues by running in the cron every 15 minutes on a host node.<\/p>\n<pre>*\/15 * * * *  \/path\/to\/compact.sh<\/pre>\n<p><strong>How the script works<\/strong><\/p>\n<ol>\n<li>Checks the \/vz partition for the available disk space.<\/li>\n<li>If the disk space is under the minimum allowed or a certain amount of time has passed (onxruns), the scripts run vzctl compact on every VPS on the node.<\/li>\n<li>Compact reclaims the space for the host node.<\/li>\n<li>If compact is unable to reclaim enough space, an email is sent notifying you of the disk usage.<\/li>\n<\/ol>\n<p><strong>Settings<\/strong><\/p>\n<p>\/tmp can be changed to any directory by changing the CFG=\u201d\/tmp\u201d line at the top of the script.<\/p>\n<p>Set compact to automatically run every X times.\u00a0 By default, compact will run every 96 times (~24 hours) even if there is enough free space. 0 will disable this feature.<\/p>\n<pre>echo 96 &gt; \/tmp\/compact.onxruns<\/pre>\n<p>Set the minimum level of disk space (in MB).\u00a0 If the available disk space falls below this, it will compact the containers.\u00a0 This defaults to 5% of your \/vz partition size.\u00a0 To set 10GB:<\/p>\n<pre>echo 10000 &gt; \/tmp\/compact.minfree<\/pre>\n<p>Set the email address used by the script (requires mailx to be installed to send an email)<\/p>\n<pre>echo me@email.com &gt; \/tmp\/compact.email<\/pre>\n<p>Set the vz partition (if varies from \/vz)<\/p>\n<pre>echo \/vz2 &gt; \/tmp\/compact.vzdir<\/pre>\n<p>Turn logging off\/on (default: 1).\u00a0 Will log to \/tmp\/compact.log<\/p>\n<pre>echo 0\/1 &gt; \/tmp\/compact.logging<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Download the script<\/strong><\/p>\n<pre>wget http:\/\/www.byteonsite.com\/scripts\/compact.sh\r\nchmod +x compact.sh\r\n<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>Debugging<\/strong><\/p>\n<p>If you want to make sure all the settings are correct. Run with the debug option to dump the settings.<\/p>\n<pre>.\/compact.sh debug<\/pre>\n<p><strong>Script source code<\/strong><\/p>\n<pre class=\"\">#!\/bin\/bash\r\n# compact.sh by Devon of ByteOnSite for OpenVZ\r\n# Distribute freely with link to http:\/\/blog.byteonsite.com\/?p=87\r\n\r\n# SETTINGS\r\n\r\n# Config Directory\r\nCFG=\"\/tmp\"\r\n\r\n# VZ Partition\r\nVZ=`cat $CFG\/compact.vzdir 2&gt;\/dev\/null`\r\n# Run Compact Automatically Every X Runs. Default: 96 runs, if run every 15 minutes this is every 24 hours.\r\nONXRUNS=`cat $CFG\/compact.onxruns 2&gt;\/dev\/null`\r\n# Minimum Free Space in MB.  Will attempt to compact if free space drops below this.  Default: automatically generated, 5% free space.\r\nMINFREE=`cat $CFG\/compact.minfree 2&gt;\/dev\/null`\r\n# Email Address\r\nEMAIL=`cat $CFG\/compact.email 2&gt;\/dev\/null`\r\n# Log enabled\r\nLOG=`cat $CFG\/compact.logging 2&gt;\/dev\/null`\r\n\r\n# END SETTINGS\r\n\r\n# DEFAULT SETTINGS\r\n\r\n# Default VZ Partition\r\nif [ ! $VZ ]; then\r\n\tVZ=\"\/vz\"\r\n\techo $VZ &gt; $CFG\/compact.vzdir\r\nfi\r\n# Default ONXRUNS\r\nif [ ! $ONXRUNS ]; then\r\n\tONXRUNS=96\r\n\techo $ONXRUNS &gt; $CFG\/compact.onxruns\r\nfi\r\n# Default MINFREE (5% of Total Partition)\r\nif [ ! $MINFREE ]; then\r\n\tMINFREE=$[`df -PBM $VZ | awk 'NR==2 {print $2}' | cut -f1 -dM`\/20]\r\n\techo $MINFREE &gt; $CFG\/compact.minfree\r\nfi\r\nif [ ! $LOG ]; then\r\n\tLOG=1\r\n\techo $LOG &gt; $CFG\/compact.logging\r\nfi\r\n\r\n# END DEFAULT SETTINGS\r\n\r\n# LOGIC\r\n\r\nFREESPACE=`df -PBM $VZ | awk 'NR==2 {print $4}' | cut -f1 -dM`\r\n\r\n# DEBUG\r\nif [ \"$1\" = \"debug\" ]; then\r\n\techo \"CFG: $CFG\"\r\n\techo \"VZ: $VZ\"\r\n\techo \"FREESPACE: ${FREESPACE}MB\"\r\n\techo \"MINFREE: ${MINFREE}MB\"\r\n\techo \"ONXRUNS: $ONXRUNS\"\r\n\techo \"LOG: $LOG\"\r\n\techo \"EMAIL: $EMAIL\"\r\n\tif [ ! -f \"\/bin\/mail\" ]; then\r\n\t\techo \"MAILX: NOT FOUND. EMAILS WON'T BE SENT ON WARNING\"\r\n\tfi\r\n\texit 0\r\nfi\r\n# END DEBUG\r\n\r\ni=`cat $CFG\/compact.count`\r\nif [ ! \"$i\" ] || [ \"$i\" -eq $ONXRUNS ]; then\r\n\ti=1\r\nfi\r\nif [ $i -eq 1 ] || [ $FREESPACE -lt $MINFREE ]; then\r\n\t# Run compact for every VPS\r\n\tstdout=\"\/dev\/null\"\r\n    if [ $LOG -eq 1 ]; then\r\n    \tstdout=\"$CFG\/compact.log\"\r\n    fi\r\n\tfor veid in `vzlist -H -o veid`\r\n\tdo\r\n\t\tdate=`date`\r\n\t\techo \"Starting compact on VEID $veid at $date..\" &gt;$stdout 2&gt;&amp;1\r\n\t\tvzctl compact $veid &gt;$stdout 2&gt;&amp;1\r\n\tdone\r\n\t# Check disk space again\r\n\tFREESPACE=`df -PBM $VZ | awk 'NR==2 {print $4}' | cut -f1 -dM`\r\n\tif [ $FREESPACE -lt $MINFREE ]; then\r\n\t\tmessage=\"Unable to compact containers enough to reduce free space below MINFREE levels. Free Space: $FREESPACE MB.\"\r\n\t\techo $message | wall\r\n\t\thostname=`hostname`\r\n\t\tif [ $EMAIL ]; then\r\n\t\t\techo $message | mail -s \"Compact failure on $hostname\" $EMAIL\r\n\t\tfi\r\n\tfi\r\nfi\r\n\r\n# Increase count\r\ni=$[$i+1]\r\necho $i &gt; $CFG\/compact.count\r\n\r\n# END LOGIC\r\nexit 0<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Problem: Ploop has a minor issue arising from dynamic resizing involving file deletion and no space on the hardware node. When a file is deleted inside a container, the host&hellip; <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[29],"tags":[20],"class_list":["post-563","post","type-post","status-publish","format-standard","hentry","category-virtualization","tag-openvz"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v25.4 (Yoast SEO v25.5) - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Ploop auto-compact script for OpenVZ nodes: compact.sh - GalaxyData Community<\/title>\n<meta name=\"description\" content=\"The following shell script (compact.sh) automates the ploop compaction process for all containers running on an OpenVZ node. This helps reduce disk usage by removing unused blocks within PLOOP images.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563\" \/>\n<meta property=\"og:locale\" content=\"ru_RU\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Ploop auto-compact script for OpenVZ nodes: compact.sh\" \/>\n<meta property=\"og:description\" content=\"The following shell script (compact.sh) automates the ploop compaction process for all containers running on an OpenVZ node. This helps reduce disk usage by removing unused blocks within PLOOP images.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563\" \/>\n<meta property=\"og:site_name\" content=\"GalaxyData Community\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/vk.com\/galaxydata\" \/>\n<meta property=\"article:published_time\" content=\"2017-09-23T15:30:04+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2025-07-22T20:51:03+00:00\" \/>\n<meta name=\"author\" content=\"Eduard Yamaltdinov\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u043e\u043c\" \/>\n\t<meta name=\"twitter:data1\" content=\"Eduard Yamaltdinov\" \/>\n\t<meta name=\"twitter:label2\" content=\"\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f\" \/>\n\t<meta name=\"twitter:data2\" content=\"2 \u043c\u0438\u043d\u0443\u0442\u044b\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563#article\",\"isPartOf\":{\"@id\":\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563\"},\"author\":{\"name\":\"Eduard Yamaltdinov\",\"@id\":\"https:\/\/galaxydata.ru\/community\/#\/schema\/person\/674f493b626af18d90fe784aa69dfd7b\"},\"headline\":\"Ploop auto-compact script for OpenVZ nodes: compact.sh\",\"datePublished\":\"2017-09-23T15:30:04+00:00\",\"dateModified\":\"2025-07-22T20:51:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563\"},\"wordCount\":305,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\/\/galaxydata.ru\/community\/#organization\"},\"keywords\":[\"openvz\"],\"articleSection\":[\"Virtualization\"],\"inLanguage\":\"ru-RU\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563\",\"url\":\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563\",\"name\":\"Ploop auto-compact script for OpenVZ nodes: compact.sh - GalaxyData Community\",\"isPartOf\":{\"@id\":\"https:\/\/galaxydata.ru\/community\/#website\"},\"datePublished\":\"2017-09-23T15:30:04+00:00\",\"dateModified\":\"2025-07-22T20:51:03+00:00\",\"description\":\"The following shell script (compact.sh) automates the ploop compaction process for all containers running on an OpenVZ node. This helps reduce disk usage by removing unused blocks within PLOOP images.\",\"breadcrumb\":{\"@id\":\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563#breadcrumb\"},\"inLanguage\":\"ru-RU\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430\",\"item\":\"https:\/\/galaxydata.ru\/community\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Ploop auto-compact script for OpenVZ nodes: compact.sh\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/galaxydata.ru\/community\/#website\",\"url\":\"https:\/\/galaxydata.ru\/community\/\",\"name\":\"GalaxyData Community\",\"description\":\"Tutorial for Cloud VDS\",\"publisher\":{\"@id\":\"https:\/\/galaxydata.ru\/community\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/galaxydata.ru\/community\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ru-RU\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/galaxydata.ru\/community\/#organization\",\"name\":\"GalaxyData Community\",\"url\":\"https:\/\/galaxydata.ru\/community\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"https:\/\/galaxydata.ru\/community\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/galaxydata.ru\/community\/wp-content\/uploads\/2026\/04\/cropped-galaxydata-site-v3.2.png\",\"contentUrl\":\"https:\/\/galaxydata.ru\/community\/wp-content\/uploads\/2026\/04\/cropped-galaxydata-site-v3.2.png\",\"width\":257,\"height\":44,\"caption\":\"GalaxyData Community\"},\"image\":{\"@id\":\"https:\/\/galaxydata.ru\/community\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/vk.com\/galaxydata\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/galaxydata.ru\/community\/#\/schema\/person\/674f493b626af18d90fe784aa69dfd7b\",\"name\":\"Eduard Yamaltdinov\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"ru-RU\",\"@id\":\"https:\/\/galaxydata.ru\/community\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/galaxydata.ru\/community\/wp-content\/uploads\/2016\/10\/cloud-server-150x150.png\",\"contentUrl\":\"https:\/\/galaxydata.ru\/community\/wp-content\/uploads\/2016\/10\/cloud-server-150x150.png\",\"caption\":\"Eduard Yamaltdinov\"},\"description\":\"Eduard Yamaltdinov \u2014 \u0430\u0432\u0442\u043e\u0440 \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0442 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0445, \u043e\u043f\u044b\u0442\u0435 \u0438\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u043a\u0430\u043a\u0443\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c.\",\"url\":\"https:\/\/galaxydata.ru\/community\/author\/galaxydata\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Ploop auto-compact script for OpenVZ nodes: compact.sh - GalaxyData Community","description":"The following shell script (compact.sh) automates the ploop compaction process for all containers running on an OpenVZ node. This helps reduce disk usage by removing unused blocks within PLOOP images.","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:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563","og_locale":"ru_RU","og_type":"article","og_title":"Ploop auto-compact script for OpenVZ nodes: compact.sh","og_description":"The following shell script (compact.sh) automates the ploop compaction process for all containers running on an OpenVZ node. This helps reduce disk usage by removing unused blocks within PLOOP images.","og_url":"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563","og_site_name":"GalaxyData Community","article_publisher":"https:\/\/vk.com\/galaxydata","article_published_time":"2017-09-23T15:30:04+00:00","article_modified_time":"2025-07-22T20:51:03+00:00","author":"Eduard Yamaltdinov","twitter_card":"summary_large_image","twitter_misc":{"\u041d\u0430\u043f\u0438\u0441\u0430\u043d\u043e \u0430\u0432\u0442\u043e\u0440\u043e\u043c":"Eduard Yamaltdinov","\u041f\u0440\u0438\u043c\u0435\u0440\u043d\u043e\u0435 \u0432\u0440\u0435\u043c\u044f \u0434\u043b\u044f \u0447\u0442\u0435\u043d\u0438\u044f":"2 \u043c\u0438\u043d\u0443\u0442\u044b"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563#article","isPartOf":{"@id":"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563"},"author":{"name":"Eduard Yamaltdinov","@id":"https:\/\/galaxydata.ru\/community\/#\/schema\/person\/674f493b626af18d90fe784aa69dfd7b"},"headline":"Ploop auto-compact script for OpenVZ nodes: compact.sh","datePublished":"2017-09-23T15:30:04+00:00","dateModified":"2025-07-22T20:51:03+00:00","mainEntityOfPage":{"@id":"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563"},"wordCount":305,"commentCount":0,"publisher":{"@id":"https:\/\/galaxydata.ru\/community\/#organization"},"keywords":["openvz"],"articleSection":["Virtualization"],"inLanguage":"ru-RU","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563#respond"]}]},{"@type":"WebPage","@id":"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563","url":"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563","name":"Ploop auto-compact script for OpenVZ nodes: compact.sh - GalaxyData Community","isPartOf":{"@id":"https:\/\/galaxydata.ru\/community\/#website"},"datePublished":"2017-09-23T15:30:04+00:00","dateModified":"2025-07-22T20:51:03+00:00","description":"The following shell script (compact.sh) automates the ploop compaction process for all containers running on an OpenVZ node. This helps reduce disk usage by removing unused blocks within PLOOP images.","breadcrumb":{"@id":"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563#breadcrumb"},"inLanguage":"ru-RU","potentialAction":[{"@type":"ReadAction","target":["https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/galaxydata.ru\/community\/ploop-auto-compact-script-for-openvz-nodes-compact-sh-563#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"\u0413\u043b\u0430\u0432\u043d\u0430\u044f \u0441\u0442\u0440\u0430\u043d\u0438\u0446\u0430","item":"https:\/\/galaxydata.ru\/community"},{"@type":"ListItem","position":2,"name":"Ploop auto-compact script for OpenVZ nodes: compact.sh"}]},{"@type":"WebSite","@id":"https:\/\/galaxydata.ru\/community\/#website","url":"https:\/\/galaxydata.ru\/community\/","name":"GalaxyData Community","description":"Tutorial for Cloud VDS","publisher":{"@id":"https:\/\/galaxydata.ru\/community\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/galaxydata.ru\/community\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ru-RU"},{"@type":"Organization","@id":"https:\/\/galaxydata.ru\/community\/#organization","name":"GalaxyData Community","url":"https:\/\/galaxydata.ru\/community\/","logo":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https:\/\/galaxydata.ru\/community\/#\/schema\/logo\/image\/","url":"https:\/\/galaxydata.ru\/community\/wp-content\/uploads\/2026\/04\/cropped-galaxydata-site-v3.2.png","contentUrl":"https:\/\/galaxydata.ru\/community\/wp-content\/uploads\/2026\/04\/cropped-galaxydata-site-v3.2.png","width":257,"height":44,"caption":"GalaxyData Community"},"image":{"@id":"https:\/\/galaxydata.ru\/community\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/vk.com\/galaxydata"]},{"@type":"Person","@id":"https:\/\/galaxydata.ru\/community\/#\/schema\/person\/674f493b626af18d90fe784aa69dfd7b","name":"Eduard Yamaltdinov","image":{"@type":"ImageObject","inLanguage":"ru-RU","@id":"https:\/\/galaxydata.ru\/community\/#\/schema\/person\/image\/","url":"https:\/\/galaxydata.ru\/community\/wp-content\/uploads\/2016\/10\/cloud-server-150x150.png","contentUrl":"https:\/\/galaxydata.ru\/community\/wp-content\/uploads\/2016\/10\/cloud-server-150x150.png","caption":"Eduard Yamaltdinov"},"description":"Eduard Yamaltdinov \u2014 \u0430\u0432\u0442\u043e\u0440 \u0438 \u044d\u043a\u0441\u043f\u0435\u0440\u0442 \u0432 \u043e\u0431\u043b\u0430\u0441\u0442\u0438 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u043e\u043d\u043d\u044b\u0445 \u0442\u0435\u0445\u043d\u043e\u043b\u043e\u0433\u0438\u0439 \u0438 \u043f\u0440\u043e\u0433\u0440\u0430\u043c\u043c\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u044f. \u0415\u0441\u043b\u0438 \u0432\u0430\u043c \u0438\u043d\u0442\u0435\u0440\u0435\u0441\u043d\u043e \u0443\u0437\u043d\u0430\u0442\u044c \u0431\u043e\u043b\u044c\u0448\u0435 \u043e \u0435\u0433\u043e \u0440\u0430\u0431\u043e\u0442\u0430\u0445, \u043e\u043f\u044b\u0442\u0435 \u0438\u043b\u0438 \u043f\u0440\u043e\u0435\u043a\u0442\u0430\u0445, \u0441\u043e\u043e\u0431\u0449\u0438\u0442\u0435 \u043f\u043e\u0434\u0440\u043e\u0431\u043d\u0435\u0435, \u043a\u0430\u043a\u0443\u044e \u0438\u043c\u0435\u043d\u043d\u043e \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u044e \u0445\u043e\u0442\u0438\u0442\u0435 \u043f\u043e\u043b\u0443\u0447\u0438\u0442\u044c.","url":"https:\/\/galaxydata.ru\/community\/author\/galaxydata"}]}},"amp_enabled":true,"_links":{"self":[{"href":"https:\/\/galaxydata.ru\/community\/wp-json\/wp\/v2\/posts\/563","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/galaxydata.ru\/community\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/galaxydata.ru\/community\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/galaxydata.ru\/community\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/galaxydata.ru\/community\/wp-json\/wp\/v2\/comments?post=563"}],"version-history":[{"count":1,"href":"https:\/\/galaxydata.ru\/community\/wp-json\/wp\/v2\/posts\/563\/revisions"}],"predecessor-version":[{"id":1961,"href":"https:\/\/galaxydata.ru\/community\/wp-json\/wp\/v2\/posts\/563\/revisions\/1961"}],"wp:attachment":[{"href":"https:\/\/galaxydata.ru\/community\/wp-json\/wp\/v2\/media?parent=563"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/galaxydata.ru\/community\/wp-json\/wp\/v2\/categories?post=563"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/galaxydata.ru\/community\/wp-json\/wp\/v2\/tags?post=563"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}