ops: fix data/ triple-duplication costing ~24 GB on VPS
astro build resolves the public/data symlink and copies all activity JSON into dist/; rsync then copied that to the webroot — but nginx already serves /data/ directly from /var/bincio/data/ via alias, so both copies were dead weight. Freed 36 GB → 14 GB on the live server. - post-receive hook: prune dist/data/ before rsync, add --exclude=data/ - docs: update manual rebuild command and nginx comment to match - serve/server.py: _mb() now uses lstat() to count symlinks at face value rather than following them to targets, so admin storage panel no longer double-counts _merged/ (which is mostly symlinks into activities/)
This commit is contained in:
@@ -594,7 +594,9 @@ async def admin_disk(bincio_session: Optional[str] = Cookie(default=None)) -> JS
|
||||
def _mb(path: Path) -> float:
|
||||
if not path.exists():
|
||||
return 0.0
|
||||
total = sum(f.stat().st_size for f in path.rglob("*") if f.is_file())
|
||||
# Use lstat to count symlink entries (few bytes each) rather than following
|
||||
# the link to the target — prevents _merged/ from double-counting activities/.
|
||||
total = sum(f.lstat().st_size for f in path.rglob("*") if f.is_file() or f.is_symlink())
|
||||
return round(total / 1_048_576, 1)
|
||||
|
||||
def _count(path: Path, pattern: str = "*") -> int:
|
||||
@@ -991,7 +993,7 @@ async def me_storage(bincio_session: Optional[str] = Cookie(default=None)) -> JS
|
||||
def _mb(path: Path) -> float:
|
||||
if not path.exists():
|
||||
return 0.0
|
||||
total = sum(f.stat().st_size for f in path.rglob("*") if f.is_file())
|
||||
total = sum(f.lstat().st_size for f in path.rglob("*") if f.is_file() or f.is_symlink())
|
||||
return round(total / 1_048_576, 2)
|
||||
|
||||
def _count(path: Path, pattern: str = "*") -> int:
|
||||
|
||||
Reference in New Issue
Block a user