<ruby id="bdb3f"></ruby>

    <p id="bdb3f"><cite id="bdb3f"></cite></p>

      <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
        <p id="bdb3f"><cite id="bdb3f"></cite></p>

          <pre id="bdb3f"></pre>
          <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

          <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
          <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

          <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                <ruby id="bdb3f"></ruby>

                合規國際互聯網加速 OSASE為企業客戶提供高速穩定SD-WAN國際加速解決方案。 廣告
                ### 從 Puppet 的 filebucket 檢索文件 > A Freudian slip is when you say one thing, but mean your mother. > > — Anon 我們每個人都會犯錯誤,這就是為什么通常鉛筆上會配有橡皮擦的原因。 每當 Puppet 客戶端在改變一個文件時,就會將改變前的版本做個備份。 如果在 Puppet 客戶端上對一個已經存在的文件做修改,不管多小的改變, 我們都可以看到這一過程: ``` # puppet agent --test info: Caching catalog for cookbook info: Applying configuration version '1293459139' --- /etc/sudoers 2010-12-27 07:12:20.421896753 -0700 +++ /tmp/puppet-file20101227-1927-13hjvy6-0 2010-12-27 07:13:21.645702932 -0700 @@ -12,7 +12,7 @@ # User alias specification -User_Alias SYSOPS = john +User_Alias SYSOPS = john,bob info: FileBucket adding /etc/sudoers as {md5} c07d0aa2d43d58ea7b5c5307f532a0b1 info: /Stage[main]/Admin::Sudoers/File[/etc/sudoers]: Filebucketed /etc/ sudoers to puppet with sum c07d0aa2d43d58ea7b5c5307f532a0b1 notice: /Stage[main]/Admin::Sudoers/File[/etc/sudoers]/content: content changed '{md5}c07d0aa2d43d58ea7b5c5307f532a0b1' to '{md5}0d218c16bd31206e 312c885884fa947d' notice: Finished catalog run in 0.45 seconds ``` 我們感興趣的是下面這行: ``` info: /Stage[main]/Admin::Sudoers/File[/etc/sudoers]: Filebucketed /etc/ sudoers to puppet with sum c07d0aa2d43d58ea7b5c5307f532a0b1 ``` Puppet 會根據文件內容創建一個 MD5 哈希,并使用它來創建一個 **filebucket** 路徑, **filebucket** 的值是基于哈希的前幾個字符的。 filebucket 用來保存 Puppet 替換下來的任何文件副本,它存放的默認位置是 /var/lib/puppet/clientbucket: ``` # ls /var/lib/puppet/clientbucket/c/0/7/d/0/a/a/2/ c07d0aa2d43d58ea7b5c5307f532a0b1 contents paths ``` 正如你看到的,ls 命令列出了文件名。 你在 bucket 的存放位置會看到兩個文件: contents 和 paths 。 contens 文件的內容即為原始文件,paths 文件的內容即為原始文件的路徑。 如果你知道文件內容的哈希值(像你看到的上面的例子),可以很容易地找到該文件; 如果你不知道,那么通過對整個 filebucket 創建一個索引文件的表將會非常有用。 #### 操作步驟 1. 使用如下命令創建索引文件: ``` # find /var/lib/puppet/clientbucket -name paths -execdir cat {}\; \ -execdir pwd \; -execdir date -r {} +"%F %T" \; -exec echo \; \ &gt; bucket.txt ``` 2. 在索引文件中查找你要尋找的文件: ``` # cat bucket.txt /etc/sudoers /var/lib/puppet/clientbucket/c/0/7/d/0/a/a/2/ c07d0aa2d43d58ea7b5c5307f532a0b1 2010-12-27 07:13:21 /etc/sudoers /var/lib/puppet/clientbucket/1/0/9/0/e/2/8/a/1090e28a70ebaae872c2e c78894f49eb 2010-12-27 07:12:20 ``` 3. 一旦你要恢復一個已知 bucket 路徑的文件,只要復制該文件到原始文件名即可: ``` # cp /var/lib/puppet/clientbucket/1/0/9/0/e/2/8/a/1090e28a70ebaae8 72c2ec78894f49eb/contents /etc/sudoers ``` #### 工作原理 上面的 find 命令會創建一份完整的 filebucket 文件列表清單, 顯示原始文件的名稱,bucket 的路徑,以及修改日期 (在上例中你學習到了如何恢復文件到以前版本), 一旦你知道 bucket 的路徑,那么就可以復制文件到正確的位置。 #### 更多用法 你可以讓 Puppet 在原始目錄下創建備份文件,而不是在 filebucket。 為了做到這一點,只需要在配置清單中指定 backup 參數的值: ``` file { "/etc/sudoers": mode => "440", source => "puppet:///modules/admin/sudoers", backup => ".bak", } ``` 現在,如果 Puppet 替換了舊文件,就會在原始路徑下面創建一個擴展名為 .bak 的備份文件。 若希望 Puppet 對所有的文件執行這樣的默認備份策略,可以在配置清單中使用如下代碼: ``` File { backup => ".bak", } ``` 要完全禁用備份,使用下面的代碼: ``` backup => false, ```
                  <ruby id="bdb3f"></ruby>

                  <p id="bdb3f"><cite id="bdb3f"></cite></p>

                    <p id="bdb3f"><cite id="bdb3f"><th id="bdb3f"></th></cite></p><p id="bdb3f"></p>
                      <p id="bdb3f"><cite id="bdb3f"></cite></p>

                        <pre id="bdb3f"></pre>
                        <pre id="bdb3f"><del id="bdb3f"><thead id="bdb3f"></thead></del></pre>

                        <ruby id="bdb3f"><mark id="bdb3f"></mark></ruby><ruby id="bdb3f"></ruby>
                        <pre id="bdb3f"><pre id="bdb3f"><mark id="bdb3f"></mark></pre></pre><output id="bdb3f"></output><p id="bdb3f"></p><p id="bdb3f"></p>

                        <pre id="bdb3f"><del id="bdb3f"><progress id="bdb3f"></progress></del></pre>

                              <ruby id="bdb3f"></ruby>

                              哎呀哎呀视频在线观看