{"id":4843,"date":"2020-04-19T19:26:35","date_gmt":"2020-04-19T22:26:35","guid":{"rendered":"https:\/\/blog.clusterweb.com.br\/?p=4843"},"modified":"2020-04-19T19:26:35","modified_gmt":"2020-04-19T22:26:35","slug":"comando-rsync-para-backup-e-sincronismo-de-arquivos-no-linux","status":"publish","type":"post","link":"https:\/\/blog.clusterweb.com.br\/?p=4843","title":{"rendered":"Comando rsync para backup e sincronismo de arquivos no Linux"},"content":{"rendered":"<p>O\u00a0<b>rsync<\/b>\u00a0\u00e9 uma ferramenta de c\u00f3pia e sincroniza\u00e7\u00e3o de arquivos e diret\u00f3rios muito vers\u00e1til e simples de utilizar. Com o rsync \u00e9 poss\u00edvel copiar arquivos localmente (no mesmo sistema de arquivos), ou para um outro host na rede utilizando qualquer shell remoto, ou ainda por meio de um daemon remoto do rsync.<\/p>\n<p>O rsync utiliza um algoritmo de transfer\u00eancia de dados que permite enviar apenas as diferen\u00e7as entre os arquivos enviados e os existentes no destino, desta forma diminuindo a quantidade de dados enviados, e aumentando a performance da transfer\u00eancia. Por isso, \u00e9 largamente utilizado como ferramenta de backup de dados, assim como comando de c\u00f3pia normal do dia-a-dia.<\/p>\n<p>O rsync tamb\u00e9m possui suporte \u00e0 c\u00f3pia de links, dispositivos, propriet\u00e1rios, grupos e permiss\u00f5es, al\u00e9m de n\u00e3o necessitar de privil\u00e9gios de superusu\u00e1rio (root) para realizar seu trabalho.<\/p>\n<p>Para que os dados sejam transferidos com seguran\u00e7a, o rsync assume que um servidor SSH esteja em execu\u00e7\u00e3o ao menos em um dos hosts onde ocorrer\u00e1 a transfer\u00eancia de arquivos.<\/p>\n<p><!--more--><\/p>\n<h3>Instala\u00e7\u00e3o do rsync<\/h3>\n<p>Caso o rsync n\u00e3o esteja instalado nos hosts, instale-o com os comandos a seguir:<\/p>\n<p>Sistemas baseados em Red Hat:<\/p>\n<pre><b><span data-blogger-escaped-style=\"color: red;\"># yum install rsync<\/span><\/b><\/pre>\n<p>Sistemas baseados em Debian:<\/p>\n<pre><b><span data-blogger-escaped-style=\"color: red;\"># apt-get install rsync<\/span><\/b><\/pre>\n<h3>Instalando a partir de c\u00f3digo-fonte<\/h3>\n<p>Caso queria utilizar a vers\u00e3o mais recente do rsync (quando este tutorial foi criado, vers\u00e3o 3.1.2), baixe-a com o comando a seguir:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>wget https:\/\/download.samba.org\/pub\/rsync\/src\/rsync-3.1.2.tar.gz<\/b><\/span><\/pre>\n<p>Ap\u00f3s baixar o pacote, descompacte-o com:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>tar -xvzf rsync-3.1.2.tar.gz<\/b><\/span><\/pre>\n<p>Entre no diret\u00f3rio criado:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>cd rsync-1.2<\/b><\/span><\/pre>\n<p>Execute o script configure:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>.\/configure<\/b><\/span><\/pre>\n<p>(caso o script configure retorne o erro \u201c<b>no acceptable cc found in $path<\/b>\u201c, instale o pacote\u00a0<b>build-essential<\/b>\u00a0com\u00a0<span data-blogger-escaped-style=\"color: red;\"><b>apt-get install build-essential<\/b><\/span>, pois um compilador C adequado n\u00e3o foi encontrado no sistema).<\/p>\n<p>Ap\u00f3s executar o script configure, execute o comando make:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>make<\/b><\/span><\/pre>\n<p>E ent\u00e3o, execute make-install:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>make-install<\/b><\/span><\/pre>\n<h3>Sintaxe b\u00e1sica do rsync<\/h3>\n<p>O utilit\u00e1rio rsync pode ser utilizado de v\u00e1rias formas diferentes, como podemos ver nas sintaxes listada a seguir:<\/p>\n<pre><span data-blogger-escaped-style=\"color: magenta;\"><b>rsync [op\u00e7\u00f5es] origem destino (local)<\/b><\/span>\r\n<span data-blogger-escaped-style=\"color: magenta;\"><b>rsync [op\u00e7\u00f5es] origem usu\u00e1rio@host:destino (modo PUSH, via shell remoto)<\/b><\/span>\r\n<span data-blogger-escaped-style=\"color: magenta;\"><b>rsync [op\u00e7\u00f5es] usu\u00e1rio@host:origem destino (modo PULL, via shell remoto)<\/b><\/span><\/pre>\n<h3>Op\u00e7\u00f5es do rsyn<\/h3>\n<p><strong>-a<br \/>\n<\/strong>Modo archive (arquivamento). Copia os arquivos e diret\u00f3rios recursivamente (como -r) e preserva links simb\u00f3licos, permiss\u00f5es de arquivos, propriedades de usu\u00e1rio e grupo (ownership) e timestamps.<\/p>\n<p><strong>-h<br \/>\n<\/strong>N\u00fameros s\u00e3o representados em formato leg\u00edvel por humanos<\/p>\n<p><strong>-r<br \/>\n<\/strong>Copia dados recursivamente, sem preservar timestamps e permiss\u00f5es ao transferir os dados<\/p>\n<p><strong>-z<br \/>\n<\/strong>Comprimir os dados dos arquivos antes de envi\u00e1-los<\/p>\n<p><strong>\u2013progress<br \/>\n<\/strong>Mostrar o progresso da c\u00f3pia de arquivos ao transferir os dados<\/p>\n<p><strong>-e<br \/>\n<\/strong>Especificar o shell remoto a ser usado (rsh, ssh)<\/p>\n<p><strong>-c, \u2013checksum<br \/>\n<\/strong>Calcula os checksums dos arquivos para verificar se eles s\u00e3o iguais ao transferi-los. Utilizada para verificar a integridade dos dados copiados.<\/p>\n<p><strong>\u2013exclude<br \/>\n<\/strong>Permite especificar arquivos ou diret\u00f3rios que n\u00e3o devem ser copiados para o destino<\/p>\n<p><strong>\u2013include<br \/>\n<\/strong>Permite especificar arquivos ou diret\u00f3rios que devem ser copiados para o destino<\/p>\n<p><strong>\u2013delete<br \/>\n<\/strong>Exclui um arquivo ou diret\u00f3rio no destino caso ele n\u00e3o exista na origem<\/p>\n<p><strong>\u2013max-size=TAMk|M|G<\/strong><br \/>\nPermite especificar o tamanho TAM m\u00e1ximo dos arquivos transferidos. Por exemplo,\u00a0<b>\u2013max-size=50k<\/b>\u00a0significa que somente ser\u00e3o copiados arquivos com no m\u00e1ximo 50kB.<\/p>\n<p><strong>\u2013bwlimit=LIMITE<br \/>\n<\/strong>Permite especificar um LIMITE de largura de banda em kbps ao transferir dados de uma m\u00e1quina para outra, de modo a n\u00e3o impactar a performance da rede.<\/p>\n<p><strong>-b, \u2013backup<br \/>\n<\/strong>N\u00e3o sobrescreve arquivos que j\u00e1 existam no destino da transfer\u00eancia, mas os renomeia adicionando um sufixo ~ aos seus nomes, antes de executar a transfer\u00eancia de novos arquivos.<\/p>\n<p><strong>-u, \u2013update<br \/>\n<\/strong>N\u00e3o sobrescreve nenhum arquivo no destino da transfer\u00eancia que possua uma data posterior (mais recente) \u00e0 data do arquivo correspondente, na origem.<\/p>\n<p><strong>\u2013remove-source-files<br \/>\n<\/strong>Exclui (apaga) os arquivos no diret\u00f3rio de origem ap\u00f3s o t\u00e9rmino da transfer\u00eancia de dados.<\/p>\n<p><strong>-n<br \/>\n<\/strong>Modo \u201cdry run\u201d \u2013 executa uma tentativa de copiar dados sem realmente copiar qualquer arquivo.<\/p>\n<p><strong>-v<br \/>\n<\/strong>Modo verboso, que mostra detalhes sobre a transfer\u00eancia de arquivos.<\/p>\n<h3>Exemplos de uso do comando<\/h3>\n<p>1 \u2013 Copiar ou sincronizar arquivos em uma m\u00e1quina localmente. Vamos copiar o arquivo de nome \/etc\/passwd para o diret\u00f3rio \/Backup, comprimindo dados:<\/p>\n<pre><b><\/b><span data-blogger-escaped-style=\"color: red;\"><b>$ sudo rsync -zvh \/etc\/passwd \/Backup\/<\/b><\/span><\/pre>\n<p>Se o diret\u00f3rio de destino n\u00e3o existir, ser\u00e1 criado pelo pr\u00f3prio rsync. A compress\u00e3o de dados, na verdade, n\u00e3o \u00e9 necess\u00e1ria quando copiamos arquivos dentro de um mesmo sistema de arquivos, por conta da performance da transfer\u00eancia dos dados.<\/p>\n<p>2 \u2013 Copiar ou sincronizar um diret\u00f3rio na m\u00e1quina local. Vamos copiar o diret\u00f3rio \/home\/fabio completo para o diret\u00f3rio \/Backup\/, preservando os atributos e permiss\u00f5es dos arquivos:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>$ sudo rsync -avh \/home\/fabio \/Backup\/<\/b><\/span><\/pre>\n<p>Se for acrescentada uma barra ao diret\u00f3rio de origem (\/home\/fabio\/), seu conte\u00fado ser\u00e1 copiado para o destino sem no entanto criar o diret\u00f3rio de nome\u00a0<b>fabio<\/b>.<\/p>\n<p>Veja o resultado da c\u00f3pia executando o comando tree:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>$ tree \/Backup<\/b><\/span><\/pre>\n<p>3 \u2013 Copiar ou sincronizar arquivos e diret\u00f3rios para ou de um servidor na rede. Vamos copiar\/sincronizar um diret\u00f3rio da m\u00e1quina local, como o meu home (\/home\/fabio) para um servidor na rede, que possui um diret\u00f3rio \/home\/fabio\/Backup e cujo IP \u00e9 192.168.1.104. O usu\u00e1rio no host remoto \u00e9 fabio:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>$ rsync -avz \/home\/fabio fabio@192.168.1.104:\/home\/fabio\/Backup\/<\/b><\/span><\/pre>\n<p>Note que ser\u00e1 pedida a senha do usu\u00e1rio no servidor remoto, no caso o fabio.<\/p>\n<table>\n<tbody>\n<tr>\n<td>Se voc\u00ea precisar efetuar o login remoto como usu\u00e1rio root, deve habilitar essa op\u00e7\u00e3o no arquivo de configura\u00e7\u00e3o do ssh no servidor, que \u00e9 o\u00a0<b>\/etc\/ssh\/sshd_config<\/b>. Abra esse arquivo com seu editor de textos favorito, com privil\u00e9gios de administrador, e altere a seguinte linha:<\/p>\n<p><i>De:<\/i><\/p>\n<p>PermitRootLogin without-password<\/p>\n<p><i>Para:<\/i><\/p>\n<p>PermitRootLogin yes<\/p>\n<p>Salve e saia do arquivo, e ent\u00e3o reinicie o servi\u00e7o do ssh:<\/p>\n<pre><b><span data-blogger-escaped-style=\"color: red;\"># service ssh restart<\/span><\/b><\/pre>\n<p>Agora voc\u00ea poder\u00e1 efetuar a c\u00f3pia via rsync sobre ssh usando a conta de root.<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>4 \u2013 Vamos fazer o contr\u00e1rio agora. Iremos copiar\/sincronizar o diret\u00f3rio remoto\u00a0<b>\/home\/fabio\/Backup<\/b>\u00a0no servidor 192.168.1.104 para a m\u00e1quina local, no diret\u00f3rio\u00a0<b>\/home\/fabio\/Documentos<\/b>:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>rsync -avzh fabio@192.168.1.104:\/home\/fabio\/Backup \/home\/fabio\/Documentos\/<\/b><\/span><\/pre>\n<p>Tamb\u00e9m ser\u00e1 pedida a senha do usu\u00e1rio remoto (fabio no exemplo).<\/p>\n<p>5 \u2013 Vamos efetuar a c\u00f3pia de todos os arquivos e diret\u00f3rios cujos nomes comecem com a letra \u2018h\u2019 do diret\u00f3rio local \/etc para o diret\u00f3rio remoto \/home\/fabio\/Backup no servidor 192.168.1.108, excluindo (n\u00e3o copiando) todo os demais arquivos e diret\u00f3rios de \/etc\/:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>rsync -avz --include 'h*' --exclude '*' \/etc\/ fabio@192.168.1.104:~\/Backup<\/b><\/span><\/pre>\n<p><em><strong>\u2013exclude \u2018*\u2019<\/strong>\u00a0\u00a0<\/em>indica que vamos excluir da c\u00f3pia todos os arquivos e diret\u00f3rios, exceto os indicados pelo par\u00e2metro\u00a0<strong><em>\u2013include<\/em><\/strong>.<\/p>\n<p>6 -Vamos fazer o backup do diret\u00f3rio \/home\/fabio\/ para o diret\u00f3rio \/home\/fabio\/Backup no servidor de rede, cujo IP \u00e9 192.168.1.104. Como esse backup j\u00e1 foi realizado anteriormente, se algum arquivo no diret\u00f3rio local tiver sido exclu\u00eddo, ao realizar a transfer\u00eancia dos arquivos tal arquivo tamb\u00e9m ser\u00e1 exclu\u00eddo na pasta do servidor, automaticamente (sincronismo).<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>rsync -av --delete \/home\/fabio\/ fabio@192.168.1.104:\/home\/fabio\/Backup<\/b><\/span><\/pre>\n<p>7 -Idem anterior, por\u00e9m copiando apenas os arquivos que tenham 10kB ou menos de tamanho. N\u00e3o ser\u00e3o copiados diret\u00f3rios, e vamos assumir que o diret\u00f3rio corrente \u00e9 o diret\u00f3rio de origem dos arquivos.<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>rsync -hv --max-size='10K' .\/* \/home\/fabio\/meubackup<\/b><\/span><\/pre>\n<p>8 \u2013 Efetuar backup do diret\u00f3rio \/etc local no diret\u00f3rio \/home\/fabio\/Backup do srvidor remoto, mostrando o progresso da c\u00f3pia dos arquivos:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>rsync -avh --progress \/etc\/ fabio@192.168.1.104:\/home\/fabio\/Backup<\/b><\/span><\/pre>\n<p>9 \u2013 Vamos copiar o conte\u00fado do diret\u00f3rio da rede \/home\/fabio\/Backup para o diret\u00f3rio local \/home\/fabio\/Documentos, apagando os arquivos na origem (remota) ap\u00f3s a transfer\u00eancia dos dados:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>rsync -avh --remove-source-files fabio@192.168.1.104:\/home\/fabio\/Backup\/ \/home\/fabio\/Documentos\/<\/b><\/span><\/pre>\n<p>10 \u2013 Vamos copiar de volta para o servidor o conte\u00fado do diret\u00f3rio local \/home\/fabio\/Documentos, por\u00e9m sem no entanto executar a transfer\u00eancia dos arquivos e diret\u00f3rios pra valer. Usaremos a op\u00e7\u00e3o de dry run (-n) para que o rsync teste essa transfer\u00eancia e retorne o resultado que ocorreria se ela fosse realmente executada:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>rsync -avhn\u00a0<\/b><\/span><span data-blogger-escaped-style=\"color: red;\"><b>\/home\/fabio\/Documentos\u00a0fabio@192.168.1.104:\/home\/fabio\/Backup\/<\/b><\/span><\/pre>\n<p>Omitindo a op\u00e7\u00e3o -n, a c\u00f3pia dos arquivos ser\u00e1 efetivada:<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>rsync -avh\u00a0<\/b><\/span><span data-blogger-escaped-style=\"color: red;\"><b>\/home\/fabio\/Documentos\u00a0fabio@192.168.1.104:\/home\/fabio\/Backup\/<\/b><\/span><\/pre>\n<p>B\u00f4nus: 11 \u2013\u00a0<b>Verificando as diferen\u00e7as entre origem e destino<\/b><\/p>\n<p>Vamos executar novamente o sincronismo de arquivos e diret\u00f3rios do diret\u00f3rio local para o remoto, como no exemplo #9, por\u00e9m visualizando as diferen\u00e7as existentes entre os arquivos na origem e no destino dos dados (op\u00e7\u00e3o -i):<\/p>\n<pre><span data-blogger-escaped-style=\"color: red;\"><b>rsync -avhi\u00a0<\/b><\/span><span data-blogger-escaped-style=\"color: red;\"><b>\/home\/fabio\/Documentos\u00a0fabio@192.168.1.104:\/home\/fabio\/Backup\/<\/b><\/span><\/pre>\n<p>Na sa\u00edda ser\u00e3o mostrados diversos caracteres em uma coluna \u00e0 esquerda dos nomes de arquivos e diret\u00f3rios. O significado desses caracteres \u00e9 o seguinte:<\/p>\n<p><strong>&lt;<\/strong>\u00a0indica que um arquivo est\u00e1 sendo transferido para o host remoto (enviado).<\/p>\n<p><strong>&gt;<\/strong>\u00a0indica que um arquivo est\u00e1 sendo transferido para o host local (recebido).<\/p>\n<p><strong>f<\/strong>\u00a0indica que se trata de um arquivo.<\/p>\n<p><strong>d<\/strong>\u00a0indica que se trata de um diret\u00f3rio<\/p>\n<p><strong>c<\/strong>\u00a0indica que est\u00e1 ocorrendo a cria\u00e7\u00e3o ou altera\u00e7\u00e3o de um item, como a cria\u00e7\u00e3o de um diret\u00f3rio<\/p>\n<p><strong>s<\/strong>\u00a0ocorreu altera\u00e7\u00e3o no tamanho.<\/p>\n<p><strong>h<\/strong>\u00a0indica que se trata de um hard link para outro item<\/p>\n<p><strong>.<\/strong>\u00a0indica que o item n\u00e3o ser\u00e1 atualizado<\/p>\n<p><strong>L<\/strong>\u00a0indica um symlink<\/p>\n<p><strong>D<\/strong>\u00a0indica um dispositivo<\/p>\n<p><strong>S<\/strong>\u00a0indica arquivo especial, como um socket nomeado ou um fifo.<\/p>\n<p><strong>t<\/strong>\u00a0existe altera\u00e7\u00e3o no timestamp.<\/p>\n<p><strong>o<\/strong>\u00a0propriet\u00e1rio alterado<\/p>\n<p><strong>g<\/strong>\u00a0grupo alterado.<\/p>\n<p>Existem muitas outras op\u00e7\u00f5es do comando rsync. Para conferi-las, acesse as p\u00e1ginas de manual ou ajuda do utilit\u00e1rio com\u00a0<b>man rsync<\/b>\u00a0ou\u00a0<b>rsync \u2013help<\/b><\/p>\n","protected":false},"excerpt":{"rendered":"<p>O\u00a0rsync\u00a0\u00e9 uma ferramenta de c\u00f3pia e sincroniza\u00e7\u00e3o de arquivos e diret\u00f3rios muito vers\u00e1til e simples de utilizar. Com o rsync \u00e9 poss\u00edvel copiar arquivos localmente (no mesmo sistema de arquivos), ou para um outro host na rede utilizando qualquer shell remoto, ou ainda por meio de um daemon remoto do rsync. O rsync utiliza um [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"site-sidebar-layout":"default","site-content-layout":"","ast-site-content-layout":"default","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"","ast-breadcrumbs-content":"","ast-featured-img":"","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"categories":[477,1082,730,1,830,1062,42,51,495,1402,68,127,548],"tags":[158,248,267,353,351,14,361,355,1465,1466],"class_list":["post-4843","post","type-post","status-publish","format-standard","hentry","category-backup-2","category-centos-7-rhel-7","category-clusterweb","category-viazap","category-debian","category-freenas","category-leitura-recomendada","category-linux-linuxrs","category-profissional-de-ti","category-rclone","category-redes-2","category-sistemas-de-armazenamento","category-ubuntu-2","tag-arquivos","tag-backup","tag-comando","tag-de","tag-e","tag-linux","tag-no","tag-para","tag-rsync","tag-sincronismo"],"_links":{"self":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4843","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=4843"}],"version-history":[{"count":1,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4843\/revisions"}],"predecessor-version":[{"id":4844,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=\/wp\/v2\/posts\/4843\/revisions\/4844"}],"wp:attachment":[{"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=4843"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=4843"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.clusterweb.com.br\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=4843"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}