{"id":265356,"date":"2015-09-10T14:04:02","date_gmt":"2015-09-10T10:04:02","guid":{"rendered":"http:\/\/savepearlharbor.com\/?p=265356"},"modified":"-0001-11-30T00:00:00","modified_gmt":"-0001-11-29T21:00:00","slug":"","status":"publish","type":"post","link":"https:\/\/savepearlharbor.com\/?p=265356","title":{"rendered":"Bash \u0441\u043a\u0440\u0438\u043f\u0442 \u0434\u043b\u044f \u0441\u043e\u0437\u0434\u0430\u043d\u0438\u044f \u0430\u0440\u0445\u0438\u0432\u0430 \u0434\u0430\u043d\u043d\u044b\u0445"},"content":{"rendered":"<p>       \u041d\u0430 \u0434\u043d\u044f\u0445 \u043e\u0437\u0430\u0434\u0430\u0447\u0438\u043b\u0441\u044f \u0440\u0435\u0437\u0435\u0432\u043d\u044b\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0431\u043b\u0430\u043a\u043e. \u041d\u0430\u0448\u0451\u043b \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b, \u0438 \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0441\u0436\u0430\u0442\u0438\u0438 \u0431\u044d\u043a\u0430\u043f\u0430 \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 (\u0434\u0443\u043c\u0430\u044e \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0437\u0430\u0447\u0435\u043c). \u041d\u0435 \u0441\u0442\u0430\u043b \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u0440\u0435\u0448\u0438\u043b \u0441\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043a \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043f\u0430\u043f\u043a\u0430 \u0436\u043c\u0443\u0442\u0441\u044f \u0432 <b><i>.tar.xz<\/i><\/b> \u0441 \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0441\u0436\u0430\u0442\u0438\u044f <b>9<\/b>, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u044e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 (\u0443 \u043c\u0435\u043d\u044f \u0441\u043d\u044d\u043f\u0448\u043e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f <b>4<\/b> \u0440\u0430\u0437\u0430). \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u0435\u043d, \u0434\u0443\u043c\u0430\u044e \u0434\u043b\u044f \u043c\u0430\u043b\u043e\u0433\u043e \u0431\u0438\u0437\u043d\u0435\u0441\u0430, \u0434\u0430 \u0438 \u0434\u043b\u044f \u043b\u0438\u0447\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439 \u043c\u043d\u043e\u0433\u0438\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430:  <\/p>\n<ul>\n<li>\u0433\u0438\u0431\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/li>\n<li>\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a, \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f)<\/li>\n<li>\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 (\u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0435\u0441\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0435\u0449\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f)<\/li>\n<li>\u0432\u044b\u0432\u043e\u0434 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0436\u0430\u0442\u0438\u0438 (\u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u0440\u0430\u0437\u043c\u0435\u0440 \u0430\u0440\u0445\u0438\u0432\u0430, \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432)<\/li>\n<li>\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u0435\u0431\u0430\u0433\u0438\u043d\u0433 (\u0432\u044b\u0432\u043e\u0434 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f)<\/li>\n<li>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u044b\u0432\u043e\u0434 (\u043a\u0430\u043a \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u043b\u043e\u0433-\u0444\u0430\u0439\u043b, \u0442\u0430\u043a \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043b\u043e\u0433-\u0444\u0430\u0439\u043b)<\/li>\n<\/ul>\n<p>  <a name=\"habracut\"><\/a><\/p>\n<div class=\"spoiler\"><b class=\"spoiler_title\">\u0421\u043e\u0431\u0441\u0442\u0432\u0435\u043d\u043d\u043e \u0441\u0430\u043c \u0441\u043a\u0440\u0438\u043f\u0442 (\u0432\u0435\u0440\u0441\u0438\u044f 2.0)<\/b><\/p>\n<div class=\"spoiler_text\">\n<pre><code class=\"bash\">#!\/bin\/bash ################################################################################ ##    Bash script for file or directory compression                           ## ################################################################################ ## 1. Configuration variables ##  $work - Working directory. Lock and log files reside here. ##    @MUST have tail slash! @NOT mandatory! ##  $srcdir - Directory where the source resides. ##    @MUST have tail slash! ##  $srcname - Source, file or directory to compress. ##  $dest - Destination is where the archive will be placed. ##    @MUST have tail slash! ##  $archname - Archive file name. ##    [ example: &quot;archive_$(date +&quot;[%Y.%m.%d - %H:%M:%S]&quot;)&quot; ] ##  $logname - Log file name. ##  $lockname - Lock file name. ##  $checklock - Check for lock file or not. ##     If you have condition(s) in which creation of an archive is not ##     recommended or fatal (e.g. while creating snapshot, directory must not ##     be tempered with in any way) and the process which is running prior to ##     archivation (rsnapshot, rsync, rdiff etc.), can create a lock file, ##     you must switch this check ON and fill out a name for a lock file, ##     to prevent integrity violation. ##     [ default: 0 ] { 0 = off, 1 = on } ##  $locksleep - How much time to wait until next try (in milliseconds). ##    [ default: 600 ] - 10 minutes. ##  $lockwait - How many tries before script stop. ##    [ default: 12 ] - Retry for 2 hours if $locksleep = 600 ##  $debug - Enable debugging or not. ##  $printtype - Set output to console and or log file. ##    [ default: &quot;l&quot; ] { &quot;cl&quot; = console & log, &quot;l&quot; = log only } ##  $timestamp - Timestamp format. ##    [ default: &quot;[%Y.%m.%d - %H:%M:%S]&quot; ] ##  $TIMEFORMAT - Output format for 'time' command. ##    [ default: &quot;%E&quot; ] ##  $compressor - Compressor and it's params. ##    [ default: &quot;xz -T 4 -9 -c&quot; ] ##  $archext - Archive extension, depending on $compressor setting. ##    [ default: &quot;.tar.xz&quot; ] ## ## 2. Functions ##  tstamp() - Prints timestamp. ##    [ example: &quot;$(tstamp &quot;[%Y.%m.%d - %H:%M:%S]&quot;)&quot; ] ##    [ fallback: &quot;${timestamp}&quot; ] ##  bold() - Makes text bold. ##    [ example: &quot;$(bold &quot;TEST&quot;)&quot; ] ##  printout() - Prints messages. ##    [ example: printout &quot;Archive file name is: %s\\n&quot; &quot;$(bold $arcname)&quot; ] ##  checkconf() - Validates configuration. ##  checklock() - Checks for lock file. ##  execcomp() - Executes compression and assigns execution time to $exectime. ##  size() - Gets object size values. ##    @Takes two parameters, object and presentation format ##      (h - human readable, b - bytes)! ##    [ example: &quot;$(size &quot;$src&quot; &quot;b&quot;)&quot; ] ##  compratio() - Gets compression ratio. ##    @Takes two parameters, source and archive! ##    [ example: &quot;$(compratio &quot;$src&quot; &quot;$archive&quot;)&quot; ] ##  compinf() - Outputs compression info. ##    [ example: compinf $src $archive ] ################################################################################  ## =========================== ## ## Set configuration variables ## ## =========================== ## work=&quot;\/tmp\/&quot; srcdir=&quot;\/tmp\/&quot; srcname=&quot;testfile&quot; dest=$work archname=$srcname logname=&quot;$srcname.log&quot; lockname=&quot;$srcname.lock&quot; checklock=1 locksleep=600 lockwait=12 debug=0 ## Do not change this variables if you don't know how! printtype=&quot;l&quot; timestamp=&quot;[%Y.%m.%d - %H:%M:%S]&quot; TIMEFORMAT=&quot;%E&quot; compressor=&quot;xz -T 4 -9 -c&quot; archext=&quot;.tar.xz&quot;  ## ======================================= ## ## WARNING! Do not modify past this point! ## ## ======================================= ##  ## ---------------- ## ## Global variables ## ## ---------------- ## tb=$(tput bold) ## Bold text. tn=$(tput sgr0) ## Normal text. src=$srcdir$srcname ## Full path to source. archivefn=$archname$archext ## Archive file name and extension. archive=$dest$archname$archext ## Full path to archive. logfile=$work$logname ## Full path to log file. lockfile=$work$lockname ## Full path to lock file. confok=0 ## Configuration state. execute=0 ## Allow execution. exectime=&quot;&quot; ## Compression execution time.  ## ------------- ## ## Initial setup ## ## ------------- ## exec 3&gt;&1 1&gt;&gt;$logfile 2&gt;&1 ## Modifies output.  ## --------- ## ## Functions ## ## --------- ## ## Sets timestamp. tstamp() { date +&quot;${timestamp}&quot;; } ## Makes text bold. bold() { echo &quot;$tb$1$tn&quot;; } ## Prints messages. printout() { [[ $printtype == &quot;l&quot; ]] && printf &quot;$@&quot; || (printf &quot;$@&quot; \\  | tee \/dev\/fd\/3); } ## Checks configuration. checkconf() {   # exec 2&gt;\/dev\/null   pass=0   checkperm() {     if [[ ! -n ${2} ]]; then       [[ -r ${1} ]] && [[ -w ${1} ]] && echo 1 || echo 0;     else       case &quot;$2&quot; in         &quot;f&quot; ) [[ -f ${1} ]] && [[ -r ${1} ]] && [[ -w ${1} ]] && \\          echo 1 || echo 0;;         &quot;d&quot; ) [[ -d ${1} ]] && [[ -r ${1} ]] && [[ -w ${1} ]] && \\          echo 1 || echo 0;;         &quot;fd&quot; ) [[ -d ${1} ]] || [[ -f ${1} ]] && [[ -r ${1} ]] && \\          [[ -w ${1} ]] && echo 1 || echo 0;;       esac     fi   }   status() { [[ $1 == 1 ]] && echo &quot;$(bold &quot;OK&quot;)&quot; || echo &quot;$(bold &quot;NOT OK&quot;)&quot;; }   ## Check working directory.   status=$(status &quot;$(checkperm &quot;$work&quot; &quot;d&quot;)&quot;)   pass=$(( pass+$(checkperm &quot;$work&quot; &quot;d&quot;)))   [[ $debug == 1 ]] && printout \\    &quot;\\t-&gt; Working directory is %s and is set to: %s\\n&quot; &quot;$status&quot; &quot;$(bold $work)&quot;   ## Check source.   status=$(status &quot;$(checkperm &quot;$src&quot; &quot;fd&quot;)&quot;)   pass=$(( pass+$(checkperm &quot;$src&quot; &quot;fd&quot;)))   [[ $debug == 1 ]] && printout &quot;\\t-&gt; Source is %s and is set to: %s\\n&quot; \\    &quot;$status&quot; &quot;$(bold $src)&quot;   ## Check destination.   status=$(status &quot;$(checkperm &quot;$dest&quot; &quot;d&quot;)&quot;)   pass=$(( pass+$(checkperm &quot;$dest&quot; &quot;d&quot;)))   [[ $debug == 1 ]] && printout &quot;\\t-&gt; Destination is %s and is set to: %s\\n&quot; \\    &quot;$status&quot; &quot;$(bold $dest)&quot;   ## Display rest of the config.   [[ $debug == 1 ]] && printout &quot;\\t-&gt; Archive is set to: %s\\n&quot; \\    &quot;$(bold $archivefn)&quot;   [[ $debug == 1 ]] && printout &quot;\\t-&gt; Log file is set to: %s\\n&quot; \\    &quot;$(bold $logname)&quot;   [[ $debug == 1 ]] && [[ $checklock == 1 ]] && printout \\   &quot;\\t-&gt; Lock file is set to: %s\\n&quot; &quot;$(bold $lockname)&quot;   [[ $debug == 1 ]] && printout &quot;\\t-&gt; Timestamp is set to: %s\\n&quot; \\    &quot;$(bold &quot;$timestamp&quot;)&quot;   [[ $debug == 1 ]] && printout &quot;\\t-&gt; Compressor is set to: %s\\n&quot; \\    &quot;$(bold &quot;$compressor&quot;)&quot;   ## Validate config   if [ $pass == 3 ]; then     confok=1; [[ $debug == 1 ]] && printout &quot;%s Configuration is %s!\\n&quot; \\      &quot;$(tstamp)&quot; &quot;$(bold &quot;OK&quot;)&quot;   else     printout &quot;%s Configuration is %s, exiting...\\n&quot; &quot;$(tstamp)&quot; \\      &quot;$(bold &quot;NOT OK&quot;)&quot;; exit 1   fi } ## Checks for lock file. checklock() {   for ((i=1; i&lt;=$lockwait; i++)); do     if [ -f ${lockfile} ]; then       [[ $debug == 1 ]] && printout \\        &quot;%s Lock file is in place, waiting... %s\\n&quot; &quot;$(tstamp)&quot; \\         &quot;$(bold &quot;$i&quot;)&quot;; sleep $locksleep     else       i=1000     fi     if [ $i == $lockwait ]; then       printout &quot;%s Lock file is in place for to long, exiting...\\n\\n&quot; &quot;$(tstamp)&quot;       exit 0     fi   done } ## Executes compression. execcomp() {   cd $srcdir || exit 1 ## Go to archive destination directory.   exectime=$( { time tar cf - $srcname | $compressor - &gt; $archive; } 2&gt;&1 ) } ## Gets object size values. size() {   [[ $2 == &quot;b&quot; ]] && du -bs &quot;$1&quot; | awk '{ print $1 }'   [[ $2 == &quot;h&quot; ]] && du -hs &quot;$1&quot; | awk '{ print $1 }' } ## Gets compression ratio. compratio() {   res=$(let res=&quot;$1\/$2&quot;; printf &quot;%s&quot; &quot;$res&quot;); printf &quot;%.*f&quot; 2 &quot;$res&quot; } ## Outputs compression info. compinf() {   printout &quot;\\t-&gt; Source size: %s (%s bytes)\\n&quot; \\    &quot;$(bold &quot;$(size &quot;$1&quot; &quot;h&quot;)&quot;)&quot; &quot;$(bold &quot;$(size &quot;$1&quot; &quot;b&quot;)&quot;)&quot;   printout &quot;\\t-&gt; Archive size: %s (%s bytes)\\n&quot; \\    &quot;$(bold &quot;$(size &quot;$2&quot; &quot;h&quot;)&quot;)&quot; &quot;$(bold &quot;$(size &quot;$2&quot; &quot;b&quot;)&quot;)&quot;   printout &quot;\\t-&gt; Compression ratio: %s\\n&quot; \\    &quot;$(bold &quot;$(compratio &quot;$(size &quot;$1&quot; &quot;b&quot;)&quot; &quot;$(size &quot;$2&quot; &quot;b&quot;)&quot;)&quot;)&quot; }  ## ---------- ## ## Initialize ## ## ---------- ## printout &quot;%s Initializing...\\n&quot; &quot;$(tstamp)&quot; checkconf ## Check configuration. [[ $checklock == 1 ]] && checklock ## Check for lock file.  ## Check if the old archive file exists, if it does, delete it. if [ -f ${archive} ]; then   [[ $debug == 1 ]] && printout &quot;%s Old archive exists, deleting...\\n&quot; \\    &quot;$(tstamp)&quot;; rm -f ${archive}   if [ ! -f ${archive} ]; then     execute=1; [[ $debug == 1 ]] && printout \\      &quot;%s Old archive deleted, proceeding...\\n&quot; &quot;$(tstamp)&quot;   else     printout &quot;%s %s Can't delete old archive file, exiting...\\n&quot; \\      &quot;$(tstamp)&quot; &quot;$(bold &quot;WARNING!&quot;)&quot;; exit 1   fi else   execute=1; [[ $debug == 1 ]] && printout \\    &quot;%s Old archive does not exist, proceeding...\\n&quot; &quot;$(tstamp)&quot; fi  ## Begin compression. if [ $execute == 1 ]; then   [[ $debug == 1 ]] && printout &quot;%s Flag is set, executing...\\n&quot; \\    &quot;$(tstamp)&quot;; execcomp   ## Check if archive file created.   if [ -f ${archive} ]; then     printout &quot;%s Archive %s created in %s!\\n&quot; &quot;$(tstamp)&quot; &quot;$(bold $archive)&quot; \\      &quot;$(bold ${exectime})&quot;     compinf $src $archive     # printout &quot;%s Process has completed successfully!\\n&quot; &quot;$(tstamp)&quot;   else     printout &quot;%s %s Archive file was NOT created, exiting...\\n&quot; \\      &quot;$(tstamp)&quot; &quot;$(bold &quot;WARNING!&quot;)&quot;; exit 1   fi else   printout &quot;%s Flag is NOT set, exiting...\\n&quot; &quot;$(tstamp)&quot;; exit 1 fi  printout &quot;\\n&quot;; exit 0 <\/code><\/pre>\n<p>  <\/div>\n<\/div>\n<p>  P.S.<br \/>  \u0422\u0435\u043c, \u043a\u043e\u043c\u0443 \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u043b\u0441\u044f \u0438 \u0435\u0441\u0442\u044c \u0436\u0435\u043b\u0430\u043d\u0438\u0435 \u0434\u043e\u0440\u0430\u0431\u043e\u0442\u0430\u0442\u044c \u0438\u043b\u0438 \u0441\u0434\u0435\u043b\u0430\u0442\u044c \u0431\u043e\u043b\u0435\u0435 \u044d\u043b\u0435\u0433\u0430\u043d\u0442\u043d\u044b\u043c, \u043f\u0440\u043e\u0448\u0443 \u043d\u0430 <a href=\"https:\/\/github.com\/chuguniy\/bash-data-compression\">GitHub<\/a>.       <\/p>\n<div class=\"clear\"><\/div>\n<p> \u0441\u0441\u044b\u043b\u043a\u0430 \u043d\u0430 \u043e\u0440\u0438\u0433\u0438\u043d\u0430\u043b \u0441\u0442\u0430\u0442\u044c\u0438 <a href=\"http:\/\/habrahabr.ru\/post\/266597\/\"> http:\/\/habrahabr.ru\/post\/266597\/<\/a><\/p>\n","protected":false},"excerpt":{"rendered":"<p>       \u041d\u0430 \u0434\u043d\u044f\u0445 \u043e\u0437\u0430\u0434\u0430\u0447\u0438\u043b\u0441\u044f \u0440\u0435\u0437\u0435\u0432\u043d\u044b\u043c \u043a\u043e\u043f\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435\u043c \u0434\u0430\u043d\u043d\u044b\u0445 \u0432 \u043e\u0431\u043b\u0430\u043a\u043e. \u041d\u0430\u0448\u0451\u043b \u043f\u043e\u0434\u0445\u043e\u0434\u044f\u0449\u0438\u0439 \u0441\u0435\u0440\u0432\u0438\u0441 \u043f\u043e\u043f\u0440\u043e\u0431\u043e\u0432\u0430\u043b, \u0438 \u043f\u043e\u043d\u044f\u043b, \u0447\u0442\u043e \u0441\u0443\u0449\u0435\u0441\u0442\u0432\u0443\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u044c \u0432 \u0441\u0436\u0430\u0442\u0438\u0438 \u0431\u044d\u043a\u0430\u043f\u0430 \u043f\u0435\u0440\u0435\u0434 \u043e\u0442\u043f\u0440\u0430\u0432\u043a\u043e\u0439 (\u0434\u0443\u043c\u0430\u044e \u043d\u0435\u0442 \u043d\u0435\u043e\u0431\u0445\u043e\u0434\u0438\u043c\u043e\u0441\u0442\u0438 \u043e\u0431\u044a\u044f\u0441\u043d\u044f\u0442\u044c \u0437\u0430\u0447\u0435\u043c). \u041d\u0435 \u0441\u0442\u0430\u043b \u0437\u0430\u043c\u043e\u0440\u0430\u0447\u0438\u0432\u0430\u0442\u044c\u0441\u044f \u0432 \u043f\u043e\u0438\u0441\u043a\u0435 \u0433\u043e\u0442\u043e\u0432\u044b\u0445 \u0440\u0435\u0448\u0435\u043d\u0438\u0439 \u0438 \u0440\u0435\u0448\u0438\u043b \u0441\u0430\u043c \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0441\u043a\u0440\u043e\u043c\u043d\u044b\u0439 \u0441\u043a\u0440\u0438\u043f\u0442\u0438\u043a \u0434\u043b\u044f \u044d\u0442\u043e\u0439 \u0446\u0435\u043b\u0438. \u0418\u0441\u0445\u043e\u0434\u043d\u044b\u0435 \u0444\u0430\u0439\u043b \u0438\u043b\u0438 \u043f\u0430\u043f\u043a\u0430 \u0436\u043c\u0443\u0442\u0441\u044f \u0432 <b><i>.tar.xz<\/i><\/b> \u0441 \u0443\u0440\u043e\u0432\u043d\u0435\u043c \u0441\u0436\u0430\u0442\u0438\u044f <b>9<\/b>, \u0447\u0442\u043e \u043f\u043e\u0437\u0432\u043e\u043b\u044f\u0435\u0442 \u0441\u043e\u0445\u0440\u0430\u043d\u0438\u0442\u044c \u043f\u0440\u0430\u0432\u0430 \u0438 \u0432\u044b\u0434\u0430\u0451\u0442 \u0445\u043e\u0440\u043e\u0448\u0443\u044e \u043a\u043e\u043c\u043f\u0440\u0435\u0441\u0441\u0438\u044e \u043d\u0430 \u0432\u044b\u0445\u043e\u0434\u0435 (\u0443 \u043c\u0435\u043d\u044f \u0441\u043d\u044d\u043f\u0448\u043e\u0442 \u0441\u0438\u0441\u0442\u0435\u043c\u044b \u0441\u0436\u0438\u043c\u0430\u0435\u0442\u0441\u044f <b>4<\/b> \u0440\u0430\u0437\u0430). \u0420\u0435\u0437\u0443\u043b\u044c\u0442\u0430\u0442\u043e\u043c \u043e\u0441\u0442\u0430\u043b\u0441\u044f \u0434\u043e\u0432\u043e\u043b\u0435\u043d, \u0434\u0443\u043c\u0430\u044e \u0434\u043b\u044f \u043c\u0430\u043b\u043e\u0433\u043e \u0431\u0438\u0437\u043d\u0435\u0441\u0430, \u0434\u0430 \u0438 \u0434\u043b\u044f \u043b\u0438\u0447\u043d\u044b\u0445 \u0446\u0435\u043b\u0435\u0439 \u043c\u043d\u043e\u0433\u0438\u043c \u043f\u0440\u0438\u0433\u043e\u0434\u0438\u0442\u044c\u0441\u044f.<\/p>\n<p>  \u0412\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u0438 \u0441\u043a\u0440\u0438\u043f\u0442\u0430:  <\/p>\n<ul>\n<li>\u0433\u0438\u0431\u043a\u0430\u044f \u043d\u0430\u0441\u0442\u0440\u043e\u0439\u043a\u0430<\/li>\n<li>\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0434\u043e\u0441\u0442\u0443\u043f\u043d\u043e\u0441\u0442\u044c \u0440\u0435\u0441\u0443\u0440\u0441\u043e\u0432 (\u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a, \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f \u043d\u0430\u0437\u043d\u0430\u0447\u0435\u043d\u0438\u044f, \u0440\u0430\u0431\u043e\u0447\u0430\u044f \u0434\u0438\u0440\u0435\u043a\u0442\u043e\u0440\u0438\u044f)<\/li>\n<li>\u043f\u0440\u043e\u0432\u0435\u0440\u043a\u0430 \u043d\u0430 \u0444\u0430\u0439\u043b \u0431\u043b\u043e\u043a\u0438\u0440\u043e\u0432\u043a\u0438 (\u043f\u0440\u0435\u0434\u043e\u0442\u0432\u0440\u0430\u0449\u0430\u0435\u0442 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u0435 \u0435\u0441\u043b\u0438 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a \u0435\u0449\u0435 \u0441\u043e\u0437\u0434\u0430\u0451\u0442\u0441\u044f)<\/li>\n<li>\u0432\u044b\u0432\u043e\u0434 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u0441\u0436\u0430\u0442\u0438\u0438 (\u0440\u0430\u0437\u043c\u0435\u0440 \u0438\u0441\u0442\u043e\u0447\u043d\u0438\u043a\u0430, \u0440\u0430\u0437\u043c\u0435\u0440 \u0430\u0440\u0445\u0438\u0432\u0430, \u0441\u043e\u043e\u0442\u043d\u043e\u0448\u0435\u043d\u0438\u0435 \u044d\u0442\u0438\u0445 \u0440\u0430\u0437\u043c\u0435\u0440\u043e\u0432)<\/li>\n<li>\u043b\u043e\u0433\u0438\u0440\u043e\u0432\u0430\u043d\u0438\u0435 \u0438 \u0434\u0435\u0431\u0430\u0433\u0438\u043d\u0433 (\u0432\u044b\u0432\u043e\u0434 \u0434\u043e\u043f\u043e\u043b\u043d\u0438\u0442\u0435\u043b\u044c\u043d\u043e\u0439 \u0438\u043d\u0444\u043e\u0440\u043c\u0430\u0446\u0438\u0438 \u043e \u043f\u0440\u043e\u0446\u0435\u0441\u0441\u0435 \u0432\u044b\u043f\u043e\u043b\u043d\u0435\u043d\u0438\u044f)<\/li>\n<li>\u0432\u043e\u0437\u043c\u043e\u0436\u043d\u043e\u0441\u0442\u044c \u043c\u0435\u043d\u044f\u0442\u044c \u0432\u044b\u0432\u043e\u0434 (\u043a\u0430\u043a \u0432 \u043a\u043e\u043d\u0441\u043e\u043b\u044c \u0438 \u043b\u043e\u0433-\u0444\u0430\u0439\u043b, \u0442\u0430\u043a \u0438 \u0442\u043e\u043b\u044c\u043a\u043e \u0432 \u043b\u043e\u0433-\u0444\u0430\u0439\u043b)<\/li>\n<\/ul>\n<p>  <\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[],"tags":[],"class_list":["post-265356","post","type-post","status-publish","format-standard","hentry"],"_links":{"self":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/265356","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=265356"}],"version-history":[{"count":0,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=\/wp\/v2\/posts\/265356\/revisions"}],"wp:attachment":[{"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=265356"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=265356"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/savepearlharbor.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=265356"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}