<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>

                ThinkChat2.0新版上線,更智能更精彩,支持會話、畫圖、視頻、閱讀、搜索等,送10W Token,即刻開啟你的AI之旅 廣告
                [TOC] ## rsync的安裝 ?rsync安裝,有些系統默認安裝有該命令 ubuntu系統 ``` sudo apt-get install rsync ``` fedora 系統 ``` sudo yum install rsync ``` rsync參數詳解 ``` rsync提供了一些跟刪除有關的參數 rsync --help | grep delete -del ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?an alias for --delete-during ? ? ?--delete ? ? ? ? ? ? ? ? ? ? ? ? ?delete extraneous files from destination dirs ? ? ?--delete-before ? ? ? ? ? ? receiver deletes before transfer, not during ? ? ?--delete-during ? ? ? ? ? ? receiver deletes during transfer (default) ? ? ?--delete-delay ? ? ? ? ? ? ? find deletions during, delete after ? ? ?--delete-after ? ? ? ? ? ? ? ?receiver deletes after transfer, not during ? ? ?--delete-excluded ? ? ? ?also delete excluded files from destination dirs --ignore-errors ? ? ? ? ? ? delete even if there are I/O errors --max-delete=NUM ? ?don't delete more than NUM files 其中--delete-before接收者在傳輸之前進行刪除操作 ``` ## 快速刪除大量文件 假如你要在linux下刪除大量文件,比如100萬、1000萬,像/var/spool/clientmqueue/的mail郵件,/usr/local/nginx/proxy_temp的nginx緩存等,那么rm -rf *可能就不好使了。 rsync 可以用來清空目錄或文件 先建立一個空目錄 ``` mkdir empty ``` 用rsync刪除目標目錄, 自定義目錄是empty , 要刪除的目標目錄是cdf_tmp ``` $ rsync--delete-before -d empty/ cdf_tmp/ ``` >注:其中--delete-before 接收者在傳輸之前進行刪除操作 ## 快速刪除大文件方法 創建一個空文件 ``` $ touch /data/blank.txt ``` 用rsync清空文件 ``` $ rsync-a --delete-before --progress --stats /root/blank.txt /root/nohup.out ``` ## 為什么rsync能夠快速刪除大文件? 1)rm命令大量調用了lstat64和unlink,可以推測刪除每個文件前都從文件系統中做過一次lstat操作。過程:正式刪除工作的第一階段,需要通過getdirentries64調用,分批讀取目錄(每次大約為4K),在內存中建立rm的文件列表;第二階段,lstat64確定所有文件的狀態;第三階段,通過unlink執行實際刪除。這三個階段都有比較多的系統調用和文件系統操作。 2)rsync所做的系統調用很少:沒有針對單個文件做lstat和unlink操作。命令執行前期,rsync開啟了一片共享內存,通過mmap方式加載目錄信息。只做目錄同步,不需要針對單個文件做unlink。 >rm的上下文切換比較多,會造成System CPU占用較多——對于文件系統的操作,簡單增加并發數并不總能提升操作速度。 ## 總結:頻繁做減法不如直接從頭來過 把文件系統的目錄與書籍的目錄做類比,rm刪除內容時,將目錄的每一個條目逐個刪除(unlink),需要循環重復操作很多次;rsync刪除內容時,建立好新的空目錄,替換掉老目錄,基本沒開銷。
                  <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>

                              哎呀哎呀视频在线观看