D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
proc
/
2
/
cwd
/
opt
/
dedrads
/
Filename :
filescan
back
Copy
#!/usr/lib/rads/venv/bin/python3 import os import shutil from subprocess import run, PIPE, DEVNULL from datetime import datetime # Print date def show_date(): print(datetime.now().strftime("%a %b %d %H:%M:%S %Y")) # Show total disk usage and print def show_disk_usage(fs='/'): print(f"\nDisk Usage for {fs}:\n") try: total, used, free = shutil.disk_usage(fs) disk_usage_percent = (used / total) * 100 if total > 0 else 0 print(f"Total: {total // (2**30)} GB") print(f"Used: {used // (2**30)} GB") print(f"Free: {free // (2**30)} GB") print(f"Usage: {disk_usage_percent:.2f}%") except Exception as e: print(f"Failed to retrieve disk usage info: {e}") # Show inode usage (like df -i) def show_inode_usage(fs='/'): print(f"\nInode Usage for {fs}:\n") try: stats = os.statvfs(fs) total_inodes = stats.f_files free_inodes = stats.f_ffree used_inodes = total_inodes - free_inodes inode_usage_percent = ( (used_inodes / total_inodes) * 100 if total_inodes > 0 else 0 ) print(f"Total Inodes: {total_inodes}") print(f"Used Inodes: {used_inodes}") print(f"Free Inodes: {free_inodes}") print(f"Usage: {inode_usage_percent:.2f}%") except Exception as e: print(f"Failed to retrieve inode info: {e}") # Find the largest directories and print def find_largest_directories(basedir="/"): print(f"\nLargest Directories for {basedir} (≥ 1 GB):\n") cmd = ( f"du --human-readable --max-depth=2 --threshold={2**30} " f"--exclude='/proc/*' --exclude='/home/virtfs/*' {basedir} " "| sort -hr | head -15" ) try: result = run( cmd, stdout=PIPE, stderr=DEVNULL, shell=True, text=True, check=True ) except Exception as e: print(f"Failed to retrieve largest directories: {e}") for line in result.stdout.splitlines(): size, path = line.split(maxsplit=1) print(f"{size:>6}\t{path}") # Find largest files and print def find_largest_files(basedir="/"): print(f"\nLargest Files for {basedir}:\n") cmd = ( f"find {basedir} " "-xdev -path /home/virtfs -prune -o -type f -printf '%s %p\n' " "| sort -nr " "| head -n 20 " "| numfmt --to=iec" ) try: result = run( cmd, stdout=PIPE, stderr=DEVNULL, shell=True, text=True, check=True ) except Exception as e: print(f"Error running command: {e}") for line in result.stdout.splitlines(): size, path = line.split(maxsplit=1) print(f"{size:>6}\t{path}") # Full listing of all directories in /backup def print_backup_directory_contents(): print("\nFull Directory Tree of /backup (Directories Only):\n") try: for root, dirs, _ in os.walk('/backup'): for name in dirs: print(os.path.join(root, name)) except Exception as e: print(f"Failed to list directories in /backup: {e}") # Show /backup disk usage, largest dirs and files def find_backup_info(basedir='/backup'): print("\nDisk Usage for /backup:\n") find_largest_directories(basedir) find_largest_files(basedir) print_backup_directory_contents() # The main function def main(): fs = '/' show_date() show_disk_usage(fs) show_inode_usage(fs) find_largest_directories(fs) find_largest_files(fs) # Add backup section find_backup_info() if __name__ == "__main__": main()