Gần đây tôi đã phải xóa và tạo lại một thư mục NFS để thu nhỏ kích thước của nó sau khi nó đã phình to trước đó. Trong quá trình này, tôi đã tìm thấy một cách khá hiệu quả để làm điều này bằng cách sử dụng rsync và các liên kết cứng. Phương pháp này tránh sao chép các tệp thực tế, trong khi vẫn hoàn thành mục tiêu tạo lại thư mục có cùng nội dung.
Vì chúng tôi cần phải có thời gian chết để thực hiện thao tác này trong cửa sổ bảo trì của chúng tôi, làm cho thư mục được xây dựng lại có sẵn càng sớm càng tốt là điều quan trọng đối với chúng tôi. Nếu sự đơn giản quan trọng hơn đối với bạn, hãy thay đổi lệnh di chuyển đầu tiên thành 'rm -rf' trên thư mục nguồn và bỏ qua lệnh 'rm -rf' khác.
Tôi đã trích xuất các lệnh này từ một quy trình lớn hơn và trừu tượng hóa các tên thư mục, vì vậy xin lỗi nếu tôi đã mắc lỗi trong bản dịch đó.
mkdir /tmp/holding_dir/
rsync -ai --delete --link-dest=/path/to/source_dir/ /path/to/source_dir/ /tmp/holding_dir/
mv /path/to/source_dir/ /tmp/deleteme/
mv /tmp/holding_dir/ /path/to/source_dir/
Sau đó, chúng tôi loại bỏ thư mục. Tùy thuộc vào kích thước, bạn có thể cần phải sử dụng một kỹ thuật phức tạp hơn để làm điều này. Ví dụ: sử dụng rsync với cờ --delete để đồng bộ thư mục trống vào thư mục này có thể hiệu quả hơn.
rm -rf /tmp/deleteme/