$ -weight: 600;">sudo -weight: 500;">apt -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -y aria2
aria2c -v
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -y aria2
aria2c -v
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">update
-weight: 600;">sudo -weight: 500;">apt -weight: 500;">install -y aria2
aria2c -v
mkdir -p ~/models
mkdir -p ~/downloads
mkdir -p ~/models
mkdir -p ~/downloads
mkdir -p ~/models
mkdir -p ~/downloads
aria2c -x 16 -s 16 \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c -x 16 -s 16 \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c -x 16 -s 16 \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c -x 8 -s 8 \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c -x 8 -s 8 \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c -x 8 -s 8 \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c \ -c \ -x8 -s8 \ -k32M \ --retry-wait=10 \ --max-tries=0 \ --file-allocation=none \ --summary-interval=60 \ -o gemma-4-26B-A4B-it-UD-Q4_K_M.gguf \ 'https://huggingface.co/unsloth/gemma-4-26B-A4B-it-GGUF/resolve/main/gemma-4-26B-A4B-it-UD-Q4_K_M.gguf?download=true'
aria2c \ -c \ -x8 -s8 \ -k32M \ --retry-wait=10 \ --max-tries=0 \ --file-allocation=none \ --summary-interval=60 \ -o gemma-4-26B-A4B-it-UD-Q4_K_M.gguf \ 'https://huggingface.co/unsloth/gemma-4-26B-A4B-it-GGUF/resolve/main/gemma-4-26B-A4B-it-UD-Q4_K_M.gguf?download=true'
aria2c \ -c \ -x8 -s8 \ -k32M \ --retry-wait=10 \ --max-tries=0 \ --file-allocation=none \ --summary-interval=60 \ -o gemma-4-26B-A4B-it-UD-Q4_K_M.gguf \ 'https://huggingface.co/unsloth/gemma-4-26B-A4B-it-GGUF/resolve/main/gemma-4-26B-A4B-it-UD-Q4_K_M.gguf?download=true'
aria2c -c -x16 -s16 -k64M \ --retry-wait=5 --max-tries=0 \ --file-allocation=none \ --summary-interval=60 \ -d ~/models \ -o gemma-4-31B-it-Q4_K_M.gguf \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c -c -x16 -s16 -k64M \ --retry-wait=5 --max-tries=0 \ --file-allocation=none \ --summary-interval=60 \ -d ~/models \ -o gemma-4-31B-it-Q4_K_M.gguf \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c -c -x16 -s16 -k64M \ --retry-wait=5 --max-tries=0 \ --file-allocation=none \ --summary-interval=60 \ -d ~/models \ -o gemma-4-31B-it-Q4_K_M.gguf \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c -c -x8 -s8 -k16M \ --retry-wait=10 --max-tries=0 \ --file-allocation=none \ -d ~/models \ "https://huggingface.co/.../model.gguf?download=true"
aria2c -c -x8 -s8 -k16M \ --retry-wait=10 --max-tries=0 \ --file-allocation=none \ -d ~/models \ "https://huggingface.co/.../model.gguf?download=true"
aria2c -c -x8 -s8 -k16M \ --retry-wait=10 --max-tries=0 \ --file-allocation=none \ -d ~/models \ "https://huggingface.co/.../model.gguf?download=true"
# First run — interrupted partway through
aria2c -c -x16 -s16 -k64M -o model.gguf "https://huggingface.co/.../model.gguf" # Second run — resumes from the interrupted position
aria2c -c -x16 -s16 -k64M -o model.gguf "https://huggingface.co/.../model.gguf"
# First run — interrupted partway through
aria2c -c -x16 -s16 -k64M -o model.gguf "https://huggingface.co/.../model.gguf" # Second run — resumes from the interrupted position
aria2c -c -x16 -s16 -k64M -o model.gguf "https://huggingface.co/.../model.gguf"
# First run — interrupted partway through
aria2c -c -x16 -s16 -k64M -o model.gguf "https://huggingface.co/.../model.gguf" # Second run — resumes from the interrupted position
aria2c -c -x16 -s16 -k64M -o model.gguf "https://huggingface.co/.../model.gguf"
aria2c --always-resume=true -c "https://example.com/bigfile.iso"
aria2c --always-resume=true -c "https://example.com/bigfile.iso"
aria2c --always-resume=true -c "https://example.com/bigfile.iso"
aria2c -c --auto-file-renaming=false \ -d ~/models -o model.gguf \ "https://new-signed-url..."
aria2c -c --auto-file-renaming=false \ -d ~/models -o model.gguf \ "https://new-signed-url..."
aria2c -c --auto-file-renaming=false \ -d ~/models -o model.gguf \ "https://new-signed-url..."
https://huggingface.co/.../model-00001-of-00037.safetensors
https://huggingface.co/.../model-00002-of-00037.safetensors
https://huggingface.co/.../model-00003-of-00037.safetensors
https://huggingface.co/.../model-00001-of-00037.safetensors
https://huggingface.co/.../model-00002-of-00037.safetensors
https://huggingface.co/.../model-00003-of-00037.safetensors
https://huggingface.co/.../model-00001-of-00037.safetensors
https://huggingface.co/.../model-00002-of-00037.safetensors
https://huggingface.co/.../model-00003-of-00037.safetensors
aria2c -i urls.txt \ --save-session=aria2-session.txt \ --save-session-interval=60 \ -c -x8 -s8 -k16M \ -d ~/models
aria2c -i urls.txt \ --save-session=aria2-session.txt \ --save-session-interval=60 \ -c -x8 -s8 -k16M \ -d ~/models
aria2c -i urls.txt \ --save-session=aria2-session.txt \ --save-session-interval=60 \ -c -x8 -s8 -k16M \ -d ~/models
aria2c --input-file=aria2-session.txt \ --save-session=aria2-session.txt \ -c
aria2c --input-file=aria2-session.txt \ --save-session=aria2-session.txt \ -c
aria2c --input-file=aria2-session.txt \ --save-session=aria2-session.txt \ -c
touch aria2-session.txt
aria2c --input-file=aria2-session.txt \ --save-session=aria2-session.txt \ --save-session-interval=30 \ -c -x8 -s8 -k16M \ -d ~/downloads
touch aria2-session.txt
aria2c --input-file=aria2-session.txt \ --save-session=aria2-session.txt \ --save-session-interval=30 \ -c -x8 -s8 -k16M \ -d ~/downloads
touch aria2-session.txt
aria2c --input-file=aria2-session.txt \ --save-session=aria2-session.txt \ --save-session-interval=30 \ -c -x8 -s8 -k16M \ -d ~/downloads
echo "alias aria2fast='aria2c -c -x8 -s8 -k16M --file-allocation=none --summary-interval=30'" >> ~/.bashrc
source ~/.bashrc
echo "alias aria2fast='aria2c -c -x8 -s8 -k16M --file-allocation=none --summary-interval=30'" >> ~/.bashrc
source ~/.bashrc
echo "alias aria2fast='aria2c -c -x8 -s8 -k16M --file-allocation=none --summary-interval=30'" >> ~/.bashrc
source ~/.bashrc
aria2fast -d ~/models -o model.gguf "https://huggingface.co/.../model.gguf?download=true"
aria2fast -d ~/models -o model.gguf "https://huggingface.co/.../model.gguf?download=true"
aria2fast -d ~/models -o model.gguf "https://huggingface.co/.../model.gguf?download=true"
echo "alias hfaria='aria2c -c -x8 -s8 -k32M --retry-wait=10 --max-tries=0 --file-allocation=none --summary-interval=60'" >> ~/.bashrc
source ~/.bashrc
echo "alias hfaria='aria2c -c -x8 -s8 -k32M --retry-wait=10 --max-tries=0 --file-allocation=none --summary-interval=60'" >> ~/.bashrc
source ~/.bashrc
echo "alias hfaria='aria2c -c -x8 -s8 -k32M --retry-wait=10 --max-tries=0 --file-allocation=none --summary-interval=60'" >> ~/.bashrc
source ~/.bashrc
aria2c -c -x8 -s8 -k32M \ --file-allocation=falloc \ -d ~/models \ "https://huggingface.co/.../model.gguf?download=true"
aria2c -c -x8 -s8 -k32M \ --file-allocation=falloc \ -d ~/models \ "https://huggingface.co/.../model.gguf?download=true"
aria2c -c -x8 -s8 -k32M \ --file-allocation=falloc \ -d ~/models \ "https://huggingface.co/.../model.gguf?download=true"
c56b8f0416a453a53aace7bef4a088a2c2db33c3b8a4eda949a380c214420b31
c56b8f0416a453a53aace7bef4a088a2c2db33c3b8a4eda949a380c214420b31
c56b8f0416a453a53aace7bef4a088a2c2db33c3b8a4eda949a380c214420b31
cd ~/models aria2c -c -x8 -s8 -k32M \ --file-allocation=none \ -o gemma-4-31B-it-Q4_K_M.gguf \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
cd ~/models aria2c -c -x8 -s8 -k32M \ --file-allocation=none \ -o gemma-4-31B-it-Q4_K_M.gguf \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
cd ~/models aria2c -c -x8 -s8 -k32M \ --file-allocation=none \ -o gemma-4-31B-it-Q4_K_M.gguf \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
cd ~/models mv c56b8f0416a453a53aace7bef4a088a2c2db33c3b8a4eda949a380c214420b31 \ gemma-4-31B-it-Q4_K_M.gguf mv c56b8f0416a453a53aace7bef4a088a2c2db33c3b8a4eda949a380c214420b31.aria2 \ gemma-4-31B-it-Q4_K_M.gguf.aria2
cd ~/models mv c56b8f0416a453a53aace7bef4a088a2c2db33c3b8a4eda949a380c214420b31 \ gemma-4-31B-it-Q4_K_M.gguf mv c56b8f0416a453a53aace7bef4a088a2c2db33c3b8a4eda949a380c214420b31.aria2 \ gemma-4-31B-it-Q4_K_M.gguf.aria2
cd ~/models mv c56b8f0416a453a53aace7bef4a088a2c2db33c3b8a4eda949a380c214420b31 \ gemma-4-31B-it-Q4_K_M.gguf mv c56b8f0416a453a53aace7bef4a088a2c2db33c3b8a4eda949a380c214420b31.aria2 \ gemma-4-31B-it-Q4_K_M.gguf.aria2
aria2c -c -x8 -s8 -k32M \ --retry-wait=10 --max-tries=0 \ --file-allocation=none \ -o gemma-4-31B-it-Q4_K_M.gguf \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c -c -x8 -s8 -k32M \ --retry-wait=10 --max-tries=0 \ --file-allocation=none \ -o gemma-4-31B-it-Q4_K_M.gguf \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true"
aria2c -c -x8 -s8 -k32M \ --retry-wait=10 --max-tries=0 \ --file-allocation=none \ -o gemma-4-31B-it-Q4_K_M.gguf \ "https://huggingface.co/unsloth/gemma-4-31B-it-GGUF/resolve/main/gemma-4-31B-it-Q4_K_M.gguf?download=true" - -x N / --max-connection-per-server=N: number of parallel HTTP connections opened to the server.
- -s N / --split=N: number of segments the file is divided into for parallel download.
- -k SIZE / --min-split-size=SIZE: minimum size per segment (e.g., 64M); prevents excessive small chunks for large files. - -c / --continue=true: resume an existing partial file if the .aria2 control file is present.
- -x16 / -s16: 16 parallel connections and 16 file segments for maximum throughput on a fast link.
- -k64M: 64 MB minimum segment size; reduces the number of chunks for very large files.
- --retry-wait=5: pause 5 seconds before each retry on transient errors.
- --max-tries=0: retry indefinitely; aria2 will not give up until stopped manually.
- --file-allocation=none: skip pre-allocation of the full file size, avoiding a blocking write at startup on Jetson NVMe storage.
- -d ~/models: explicit target directory.
- -o <filename>: explicit output filename, preventing query-string characters or hash-like object keys from appearing in the filename on disk. - If the data file is complete and passes an integrity check (e.g., SHA-256 matches the repository-published hash), it can be kept and removed from any pending URL or session lists.
- If the data file is incomplete and the .aria2 file is gone, aria2 has no record of which byte ranges were successfully written. The safest recovery is to delete both the partial data file and any remnant .aria2 file, then -weight: 500;">restart the download from scratch for that specific file. - The output file name and directory path are unchanged.
- The new URL resolves to the same file content. - -i urls.txt: read download targets from the URL list file.
- --save-session=aria2-session.txt: write all active and incomplete download state to the session file.
- --save-session-interval=60: flush the session file to disk every 60 seconds, limiting lost progress on an abrupt -weight: 500;">stop.
- -c: resume any partial files found in the target directory. - Use a dedicated directory per model project (~/models, ~/hf_cache) to keep .aria2 control files co-located with their data files and avoid cross-directory confusion.
- Prefer --file-allocation=none for fast startup. Switch to falloc only when pre-allocation is explicitly needed for fragmentation control on large multi-GB artefacts.
- Start with -x8 -s8 and increase to 16 if the connection and server support it without triggering rate limiting.
- Always include -c for any file larger than a few hundred megabytes to guard against accidental restarts. - Signed S3 URLs in the redirect chain expire mid-download on very large or slow-connection transfers.
- High concurrency (-x16 -s16) triggers per-connection rate limiting on popular models. - Reduce -x and -s to lower concurrent byte-range requests.
- Increase --retry-wait (e.g., --retry-wait=30) and keep --max-tries=0 to allow extended retry cycles.
- Check for local storage or filesystem errors with dmesg and journalctl -xe. Write errors on Jetson NVMe can present as download failures at the application layer.
- If the .aria2 control file is corrupted and resume fails consistently, delete both the partial data file and the .aria2 file, then -weight: 500;">restart that specific download only — not the entire batch. - Established a correct and efficient aria2 command pattern for large Hugging Face model downloads on Jetson AGX Orin, including proper flag ordering for -x, -s, and -k, and the mandatory use of -o to avoid hash-like filenames from object storage redirects.
- Documented resume mechanics using .aria2 control files, the -c flag, and --always-resume=true, with explicit guidance on what to do when the control file is missing or the data file has been renamed.
- Provided a signed-URL resume pattern using --auto-file-renaming=false that handles expiring links without restarting partial downloads.
- Defined batch download patterns using URL list files and persistent session files (--save-session, --input-file) for multi-shard model repositories such as safetensors split sets.
- Captured Jetson-specific defaults covering file allocation modes (none vs. falloc), directory hygiene, concurrency tuning, disk space monitoring, and error recovery for long-running downloads.
- Identified the root cause of HTTP 403 (errorCode=22) errors during large Hugging Face downloads as expiring signed URLs and per-connection rate limiting, with a prescriptive mitigation using reduced concurrency and extended retry delays.