báo cáo sai thư mục trống


13

Tôi đang sử dụng các lệnh này:

du -sh --apparent-size ./*
du -sh ./*

cả hai báo cáo:

4.0K    ./Lightroom_catalog_from_win_backup
432M    ./Lightroom catalog - wine_backup

trong khi các thư mục chứa:

$ll ./"Lightroom catalog - wine_backup"
total 432M
-rwxrwx--- 1 gigi gigi 432M Mar 18  2018 Lightroom 5 Catalog Linux.lrcat
-rwxrwx--- 1 gigi gigi  227 Nov 21  2015 zbackup.bat
$ll ./Lightroom_catalog_from_win_backup
total 396M
-rwxrwx--- 3 gigi gigi 396M Dec 17 09:35 Lightroom 5 Catalog Linux.lrcat
-rwxrwx--- 3 gigi gigi  227 Dec 17 09:35 zbackup.bat

Tại sao dubáo cáo 4.0Kcho ./Lightroom_catalog_from_win_backup và làm cách nào tôi có thể báo cáo chính xác?

PS: thông tin hệ thống khác:

$stat --file-system $HOME
  File: "/home/gigi"
    ID: 5b052c62a5a527bb Namelen: 255     Type: ext2/ext3
Block size: 4096       Fundamental block size: 4096
Blocks: Total: 720651086  Free: 155672577  Available: 119098665
Inodes: Total: 183050240  Free: 178896289

$lsb_release -a
No LSB modules are available.
Distributor ID: Ubuntu
Description:    Ubuntu 16.04.5 LTS
Release:        16.04
Codename:       xenial

Để xây dựng dựa trên các câu trả lời đã được đưa ra cho đến nay, điều gì sẽ /bin/ls -li './*/Lightroom 5 Catalog Linux.lrcat'trở lại?
doneal24

ls -li ./*/"Lightroom 5 Catalog Linux.lrcat" 36831321 -rwxrwx--- 1 gigi gigi 432M Mar 18 2018 ./Lightroom catalog - wine_backup/Lightroom 5 Catalog Linux.lrcat 36833201 -rwxrwx--- 3 gigi gigi 396M Dec 17 09:35 ./Lightroom_catalog_from_win_backup/Lightroom 5 Catalog Linux.lrcat
adrhc

1
Điều này trình bày một vấn đề với các câu trả lời vì tệp có số lượng liên kết của ba không được tính ở nơi khác trong dulệnh. Vì vậy, bạn chỉ có hai thư mục con trong thư mục làm việc của bạn?
doneal24

không, tôi có khoảng 15 người khác
adrhc

Câu trả lời:


23

Tôi có thể sao chép nếu các tập tin là liên kết cứng:

~ mkdir foo bar
~ dd if=/dev/urandom of=bar/file1 count=1k bs=1k
1024+0 records in
1024+0 records out
1048576 bytes (1.0 MB, 1.0 MiB) copied, 0.00985276 s, 106 MB/s
~ ln bar/file1 foo/file1
~ du -sh --apparent-size foo bar
1.1M    foo
4.0K    bar

Đây là hành vi dự kiến. Từ các dutài liệu GNU :

Nếu hai hoặc nhiều liên kết cứng trỏ đến cùng một tệp, chỉ một trong các liên kết cứng được tính. Thứ tự đối số tệp ảnh hưởng đến các liên kết được tính và việc thay đổi thứ tự đối số có thể thay đổi số lượng và mục nhập đầu ra.

Nếu bạn thực sự cần kích thước lặp lại của các liên kết cứng, hãy thử -ltùy chọn:

' -l'
' --count-links'
Đếm kích thước của tất cả các tệp, ngay cả khi chúng đã xuất hiện (dưới dạng liên kết cứng).

~ du -sh --apparent-size foo bar -l
1.1M    foo
1.1M    bar

15

Lưu ý cách đếm liên kết 3cho hai tệp Lightroom 5 Catalog Linux.lrcatzbackup.battrong Lightroom_catalog_from_win_backup.

Điều này có nghĩa là hai tệp này được liên kết cứng với (tên bổ sung cho) các tệp khác ở đâu đó. Khi bạn chạy dutrên một thư mục hoặc một tập hợp các tệp, mỗi liên kết cứng chỉ được tính một lần.

Thí dụ:

$ ls -l
total 41024
-rw-r--r--  2 kk  wheel  10485760 Dec 17 09:07 file1
-rw-r--r--  2 kk  wheel  10485760 Dec 17 09:07 file2

$ du -h file1
10.0M   file1

$ du -h file2
10.0M   file2

$ du -h .
10.0M   .

Hành vi này được quy định rõ ràng theo tiêu chuẩn POSIX cho dutiện ích :

Một tệp xuất hiện nhiều lần trong một toán hạng tệp và có số lượng liên kết lớn hơn 1 sẽ chỉ được tính và ghi cho một mục nhập.

Một số dutriển khai có các tùy chọn không chuẩn để vô hiệu hóa hành vi này. Đối với GNU du, điều này được thực hiện với -ltùy chọn.


3

Nó gần như chắc chắn hoạt động chính xác. duchỉ đếm mỗi tệp một lần bất kể số lần tham chiếu của nó là bao nhiêu lần. Có thể hai thư mục của bạn chứa cùng một tập hợp các tệp được liên kết cứng.

Trang hướng dẫn dành cho GNU ducung cấp -l, --count-linksđể tắt tối ưu hóa tiêu chuẩn này (xem man duđể kiểm tra xem việc triển khai của bạn có bao gồm điều này không). Hoặc bạn chạy duhai lần, một lần cho mỗi thư mục.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.