ஒரு வலைத்தளத்தை நீங்கள் விரும்பினால், அதை பேக்கப் செய்யுங்கள்: வலை உள்ளடக்கத்தை காப்பகப்படுத்துவதற்கான ஒரு நடைமுறை வழிகாட்டி

ஒரு வலைத்தளத்தை நீங்கள் விரும்பினால், அதை பேக்கப் செய்யுங்கள்: வலை உள்ளடக்கத்தை காப்பகப்படுத்துவதற்கான ஒரு நடைமுறை வழிகாட்டி

பல்வேறு கருவிகளைப் பயன்படுத்தி உங்களுக்குப் பிடித்த வலைப்பக்கங்களை எவ்வாறு திறம்பட பாதுகாப்பது என்பதைக் கற்றுக்கொள்ளுங்கள்.

வலை உள்ளடக்கத்தை பேக்கப் செய்வதன் முக்கியத்துவம் முன்னெப்போதையும் விட இப்போது மிகவும் அவசியமாகிறது. எண்ணற்ற வலைத்தளங்கள் காணாமல் போவது அல்லது அவற்றின் கொள்கைகளை மாற்றுவது போன்றவற்றால், உங்களுக்குப் பிடித்த பக்கங்களை எவ்வாறு காப்பகப்படுத்துவது என்பதை அறிவது மதிப்புமிக்க தகவல்களை இழப்பதில் இருந்து உங்களைக் காப்பாற்றும்.

வலை உள்ளடக்கத்தை ஏன் காப்பகப்படுத்த வேண்டும்?

ஒரு காலத்தில் சிறந்த உள்ளடக்கத்திற்கு வழிவகுத்த இணைப்பு இப்போது 404 பிழையை (error) வழங்குவதைக் கண்டு நம்மில் பலர் ஏமாற்றமடைந்திருக்கிறோம். காலாவதியான domain-கள், தள மூடல்கள் அல்லது வலைத்தளக் கொள்கைகளில் ஏற்படும் மாற்றங்கள் காரணமாக இது நிகழலாம். ஒரு பக்கத்தை புக்மார்க் செய்வது மட்டும் போதாது; இணைப்புகள் முறியக்கூடும், மேலும் உள்ளடக்கம் மறைந்துவிடக்கூடும். காப்பகப்படுத்துதல் உங்களுக்குப் பிடித்த வலை உள்ளடக்கம் எதிர்காலக் குறிப்புக்காகப் பாதுகாக்கப்படுவதை உறுதி செய்கிறது.

வலை உள்ளடக்கத்தை காப்பகப்படுத்துவதற்கான கருவிகள்

வலை உள்ளடக்கத்தை காப்பகப்படுத்த பல கருவிகள் கிடைக்கின்றன. இங்கே மூன்று பிரபலமான விருப்பங்கள் உள்ளன:

  1. monolith: இந்த command-line கருவி வலைப்பக்கங்களை தேவையான அனைத்து CSS, படங்கள் மற்றும் JavaScript ஆகியவற்றுடன் ஒரே HTML கோப்பாகச் சேமிக்கிறது. இது இணைய இணைப்பு தேவையின்றி காப்பகப்படுத்தப்பட்ட பக்கத்தை offline-ல் எளிதாகப் பார்க்க உதவுகிறது.

  2. wget: இணையத்திலிருந்து கோப்புகளைப் பதிவிறக்கக்கூடிய ஒரு சக்திவாய்ந்த command-line utility. இது முழு வலைத்தளங்களையும் பிரதிபலிக்க (mirror செய்ய) முடியும் என்பதால், static தளங்களை பேக்கப் செய்வதற்கு மிகவும் ஏற்றது.

  3. ArchiveBox: பல்வேறு வடிவங்களில் வலை உள்ளடக்கத்தை காப்பகப்படுத்தும் ஒரு open-source, self-hosted கருவி. இது முழு வலைத்தளங்கள், தனிப்பட்ட பக்கங்கள் அல்லது இணைப்புகளின் தொகுப்புகளைச் சேமிக்க முடியும், மேலும் உங்கள் காப்பகங்களைத் தேடுவதற்கான எளிய பயனர் இடைமுகத்தை (user-friendly interface) வழங்குகிறது.

சரியான கருவியைத் தேர்ந்தெடுப்பது

நீங்கள் காப்பகப்படுத்தத் தொடங்குவதற்கு முன், எதைச் சேமிக்க விரும்புகிறீர்கள் என்பதைத் தீர்மானிப்பது அவசியமாகும். இதோ ஒரு விரைவான வழிகாட்டி:

  • ஒற்றைப் பக்கம்: ஒரு முழு வலைப்பக்கத்தையும் தனித்தனி HTML கோப்பாக சேமிக்க monolith அல்லது SingleFile உலாவி நீட்டிப்பைப் பயன்படுத்தவும்.
  • முழு Static தளம்: முழு தளத்தையும் பதிவிறக்க wget --mirror -ஐப் பயன்படுத்தவும். நீண்ட காலப் பாதுகாப்பிற்கு WARC (Web ARChive) வடிவத்தையும் சேர்த்துக் கொள்வது பரிந்துரைக்கப்படுகிறது.
  • தேடல் வசதியுடன் கூடிய நீண்ட கால சேகரிப்பு: வலை உள்ளடக்கத்தின் தேடக்கூடிய காப்பகத்தை உருவாக்க, self-hosted ArchiveBox அமைப்பை நிறுவவும்.

ஒரு வலைத்தளத்தை Mirror செய்ய wget-ஐ எவ்வாறு பயன்படுத்துவது

ஒரு வலைத்தளத்தை பிரதிபலிக்க (mirror செய்ய) wget-ஐப் பயன்படுத்த, பின்வரும் படிகளைப் பின்பற்றவும்:

படி 1: wget-ஐ நிறுவுங்கள்

உங்களிடம் wget நிறுவப்படவில்லை என்றால், அதை எளிதாக நிறுவலாம். macOS-ல், அதை நிறுவ ஒரு package manager-ஐப் பயன்படுத்தலாம்.

படி 2: ஒரு Backup Script-ஐ உருவாக்குங்கள்

பேக்கப் செயல்முறையைத் தானியங்குபடுத்த நீங்கள் ஒரு எளிய script-ஐ உருவாக்கலாம். இதோ ஒரு மாதிரி script:

#!/usr/bin/env bash
# mirror-site.sh - backup một site tĩnh, kèm file WARC
set -euo pipefail
URL="$1"
NAME=$(echo "$URL" | sed -E 's#https?://##; s#/.*##')
DATE=$(date +%Y%m%d)
OUT="$HOME/web-archive/$NAME/$DATE"
mkdir -p "$OUT"
cd "$OUT"
wget --mirror --convert-links --adjust-extension --page-requisites --no-parent --wait=1 --random-wait --limit-rate=500k --user-agent='Mozilla/5.0 (personal-archive)' --warc-file="$NAME-$DATE" --warc-cdx "$URL"
echo "Xong: $OUT"
du -sh "$OUT"

படி 3: Script-ஐ இயக்கவும்

நீங்கள் காப்பகப்படுத்த விரும்பும் வலைத்தளத்தின் URL-ஐ வழங்கி script-ஐ இயக்கவும்:

bash mirror-site.sh https://example.com

monolith மூலம் தனிப்பட்ட பக்கங்களை காப்பகப்படுத்துதல்

குறிப்பாக ஒரு sitemap கொண்ட வலைப்பதிவில் இருந்து தனிப்பட்ட பக்கங்களை நீங்கள் காப்பகப்படுத்த விரும்பினால், monolith-ஐப் பயன்படுத்தலாம். அதை எப்படி செய்வது என்பது இதோ:

படி 1: monolith-ஐ நிறுவுங்கள்

உங்கள் கணினியில் monolith நிறுவப்பட்டுள்ளதா என்பதை உறுதிப்படுத்திக் கொள்ளுங்கள். அதன் அதிகாரப்பூர்வ வலைத்தளத்தில் நிறுவல் வழிமுறைகளைக் காணலாம்.

படி 2: ஒரு காப்பக Script-ஐ உருவாக்குங்கள்

ஒரு sitemap-ல் பட்டியலிடப்பட்டுள்ள பக்கங்களை காப்பகப்படுத்துவதற்கான Python script இதோ:

#!/usr/bin/env python3
# archive_sitemap.py - Python 3.10+, cần: pip install requests
import hashlib
import subprocess
import sys
import time
import xml.etree.ElementTree as ET
from pathlib import Path
import requests

NS = {"sm": "http://www.sitemaps.org/schemas/sitemap/0.9"}
OUT_DIR = Path.home() / "web-archive" / "pages"

def get_urls(sitemap_url: str) -> list[str]:
    resp = requests.get(sitemap_url, timeout=30)
    resp.raise_for_status()
    root = ET.fromstring(resp.content)
    if root.tag.endswith("sitemapindex"):
        urls = []
        for loc in root.findall("sm:sitemap/sm:loc", NS):
            urls.extend(get_urls(loc.text.strip()))
        return urls
    return [loc.text.strip() for loc in root.findall("sm:url/sm:loc", NS)]

def archive(url: str) -> None:
    key = hashlib.sha1(url.encode()).hexdigest()[:12]
    target = OUT_DIR / f"{key}.html"
    if target.exists():
        print(f"[skip] {url}")
        return
    result = subprocess.run(["monolith", url, "-j", "-I", "-o", str(target)], capture_output=True, text=True, timeout=120)
    status = "ok" if result.returncode == 0 else "FAIL"
    print(f"[{status}] {url} - {target.name}")
    with open(OUT_DIR / "index.tsv", "a") as f:
        f.write(f"{key}\t{status}\t{url}\n")

if __name__ == "__main__":
    OUT_DIR.mkdir(parents=True, exist_ok=True)
    for u in get_urls(sys.argv[1]):
        archive(u)
        time.sleep(2)

படி 3: Script-ஐ இயக்கவும்

இந்த script-ஐ இயக்க, பின்வரும் கட்டளையைப் (command) பயன்படுத்தவும்:

python3 archive_sitemap.py https://example.com/sitemap.xml

ArchiveBox மூலம் தானியங்குபடுத்துதல்

பெரிய அளவிலான இணைப்புகளின் தொகுப்புகளுக்கு, ArchiveBox மிகவும் பயனுள்ளதாக இருக்கும். அதை எவ்வாறு அமைப்பது என்பது இதோ:

படி 1: ArchiveBox-ஐ நிறுவுங்கள்

நீங்கள் Docker-ஐப் பயன்படுத்தி ArchiveBox-ஐ அமைக்கலாம். அதற்காக ஒரு directory-ஐ உருவாக்கி இயக்கவும்:

mkdir -p ~/archivebox/data
cd ~/archivebox
curl -fsSL 'https://docker-compose.archivebox.io' -o docker-compose.yml
docker compose run archivebox init --setup
docker compose up -d

நீங்கள் தனிப்பட்ட இணைப்புகள் அல்லது இணைப்புகள் கொண்ட கோப்பைச் சேர்க்கலாம்:

docker compose run archivebox add 'https://example.com/article'
docker compose run archivebox add ~/links.txt

படி 3: Backups-ஐ அட்டவணைப்படுத்துங்கள்

ஒரு cron job-ஐப் பயன்படுத்தி காப்பகப்படுத்தும் செயல்முறையை நீங்கள் தானியங்குபடுத்தலாம். உதாரணமாக, ஒவ்வொரு ஞாயிற்றுக்கிழமையும் அதிகாலை 3 மணிக்கு பேக்கப்பை இயக்க:

0 3 * * 0 /home/user/bin/mirror-site.sh https://example.com/blog/ /var/log/mirror.log 2>&1

முடிவுரை

மதிப்புமிக்க தகவல்கள் மறைந்துவிடாமல் பாதுகாக்க வலை உள்ளடக்கத்தை காப்பகப்படுத்துவது இன்றியமையாததாகும். wget, monolith, மற்றும் ArchiveBox போன்ற கருவிகளைப் பயன்படுத்துவதன் மூலம், உங்களுக்குப் பிடித்த வலைத்தளங்களை திறம்பட பேக்கப் செய்து, அவை எதிர்காலத்திலும் பயன்பாட்டில் இருப்பதை உறுதிசெய்ய முடியும்.

நன்மைகள்

  • செயலிழந்த இணைப்புகள் அல்லது காலாவதியான domain-களால் ஏற்படும் தரவு இழப்பிலிருந்து பாதுகாக்கிறது.
  • காப்பகப்படுத்தப்பட்ட உள்ளடக்கத்தை offline-ல் அணுக அனுமதிக்கிறது.
  • தகவல்களை எளிதாக மீட்டெடுக்க தேடக்கூடிய காப்பகத்தை வழங்குகிறது.

குறைபாடுகள்

  • அமைப்பதற்கும் பயன்படுத்துவதற்கும் சில தொழில்நுட்ப அறிவு தேவைப்படுகிறது.
  • காப்பகப்படுத்தப்படும் உள்ளடக்கத்தின் அளவைப் பொறுத்து அதிக சேமிப்பக இடத்தை (storage space) எடுத்துக்கொள்ளலாம்.
  • பேக்கப்புகள் பயன்படக்கூடிய வகையில் இருப்பதை உறுதிசெய்ய வழக்கமான பராமரிப்பும் சோதனைகளும் அவசியமாகும்.

எச்சரிக்கை

இந்தக் கட்டுரை கல்வி நோக்கங்களுக்காக மட்டுமே உருவாக்கப்பட்டது. இந்த command-களை செயல்படுத்தும்போது placeholder மதிப்புகளுக்கு பதிலாக உங்கள் உண்மையான தரவைப் பயன்படுத்துவதை உறுதிசெய்யவும். எதையும் நம்புவதற்கு முன் எப்போதும் மூல ஆதாரத்துடன் தகவல்களை சரிபார்க்கவும்.

அடிக்கடி கேட்கப்படும் கேள்விகள்

  • வலைக் காப்பகப்படுத்துதல் (web archiving) என்றால் என்ன? — வலைக் காப்பகப்படுத்துதல் என்பது வலை உள்ளடக்கத்தை எதிர்கால அணுகலுக்காகச் சேகரித்து பாதுகாக்கும் செயல்முறையாகும்.
  • நான் ஏன் ஒரு வலைத்தளத்தை பேக்கப் செய்ய வேண்டும்? — ஒரு வலைத்தளத்தை பேக்கப் செய்வது link rot, domain காலாவதி அல்லது இயங்குதள மாற்றங்களால் மதிப்புமிக்க தகவல்களை இழப்பதைத் தடுக்கிறது.
  • வலை உள்ளடக்கத்தை காப்பகப்படுத்த நான் என்ன கருவிகளைப் பயன்படுத்தலாம்? — பிரபலமான கருவிகளில் wget, monolith, மற்றும் ArchiveBox ஆகியவை அடங்கும்.
  • ஒரு வலைத்தளத்தை mirror செய்ய நான் wget-ஐ எவ்வாறு பயன்படுத்துவது? — ஒரு முழு வலைத்தளத்தையும் பதிவிறக்க பல்வேறு விருப்பங்களுடன் (options) wget --mirror -ஐ நீங்கள் பயன்படுத்தலாம்.
  • WARC வடிவம் என்றால் என்ன? — WARC (Web ARChive) என்பது வலைப்பக்கங்களையும் அவற்றின் தொடர்புடைய metadata-வையும் நீண்ட காலப் பாதுகாப்பிற்காகச் சேமிக்கப் பயன்படும் ஒரு கோப்பு வடிவமாகும்.
  • நான் JavaScript மூலம் render செய்யப்படும் வலைத்தளங்களை காப்பகப்படுத்த முடியுமா? — ஆம், ஆனால் JavaScript-ஐக் கையாளக்கூடிய SingleFile அல்லது ArchiveBox போன்ற கருவிகள் உங்களுக்குத் தேவைப்படலாம்.
  • காப்பகப்படுத்தும் செயல்முறையை நான் எவ்வாறு தானியங்குபடுத்தலாம்? — உங்களுக்குப் பிடித்த வலைத்தளங்களின் வழக்கமான பேக்கப்புகளைத் திட்டமிட cron jobs-ஐப் பயன்படுத்தலாம்.
  • 3-2-1 backup விதி என்றால் என்ன? — 3-2-1 விதி என்பது உங்கள் தரவின் மூன்று பிரதிகளை, இரண்டு வெவ்வேறு வகையான சேமிப்பகங்களில் வைத்திருக்க வேண்டும், அதில் ஒரு பிரதியை offsite-ல் சேமித்து வைக்க வேண்டும் என்று பரிந்துரைக்கிறது.

குறிச்சொற்கள்

#webdev #archiving #selfhosted #devops #backup #wget #monolith #ArchiveBox #datarecovery #webpreservation

Free field guide

Prompt-Injection Defense Checklist

The controls that actually reduce the blast radius when your app feeds untrusted text to an LLM. Enter your email — you'll get the PDF instantly, plus new posts on AI, security & Linux.