| #!/bin/bash |
|
|
| |
| REPO_ID="benzlxs/objaverse_rendering_set" |
| REPO_TYPE="dataset" |
| LOCAL_DIR="zip_folder" |
| STABILITY_CHECK_INTERVAL=150 |
| STABILITY_THRESHOLD=2 |
| LOG_FILE="upload_log_173.txt" |
|
|
| |
| export HF_HUB_ENABLE_HF_TRANSFER=1 |
|
|
| |
| GREEN='\033[0;32m' |
| YELLOW='\033[1;33m' |
| RED='\033[0;31m' |
| NC='\033[0m' |
|
|
| |
| log_message() { |
| echo -e "$1" |
| echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1" >> "$LOG_FILE" |
| } |
|
|
| |
| is_file_stable() { |
| local file=$1 |
| local prev_size=0 |
| local stable_count=0 |
|
|
| log_message "${YELLOW}Monitoring $file for stability...${NC}" |
|
|
| while [ $stable_count -lt $STABILITY_THRESHOLD ]; do |
| if [ ! -f "$file" ]; then |
| log_message "${YELLOW}File $file not found yet, waiting...${NC}" |
| sleep $STABILITY_CHECK_INTERVAL |
| continue |
| fi |
|
|
| current_size=$(stat -f%z "$file" 2>/dev/null || stat -c%s "$file" 2>/dev/null) |
|
|
| if [ "$current_size" -eq "$prev_size" ] && [ "$current_size" -gt 0 ]; then |
| stable_count=$((stable_count + 1)) |
| log_message "Size unchanged: $current_size bytes (check $stable_count/$STABILITY_THRESHOLD)" |
| else |
| stable_count=0 |
| prev_size=$current_size |
| log_message "Size changed to: $current_size bytes, resetting counter" |
| fi |
|
|
| if [ $stable_count -lt $STABILITY_THRESHOLD ]; then |
| sleep $STABILITY_CHECK_INTERVAL |
| fi |
| done |
|
|
| log_message "${GREEN}File $file is stable at $current_size bytes${NC}" |
| return 0 |
| } |
|
|
| |
| wait_for_file() { |
| local file=$1 |
| local max_wait=3600 |
| local waited=0 |
|
|
| while [ ! -f "$file" ] && [ $waited -lt $max_wait ]; do |
| log_message "${YELLOW}Waiting for $file to be created...${NC}" |
| sleep 10 |
| waited=$((waited + 10)) |
| done |
|
|
| if [ ! -f "$file" ]; then |
| log_message "${RED}Timeout waiting for $file${NC}" |
| return 1 |
| fi |
|
|
| return 0 |
| } |
|
|
| |
| log_message "${GREEN}=== Starting Hugging Face Upload Script ===${NC}" |
| log_message "Repository: $REPO_ID" |
| log_message "Local directory: $LOCAL_DIR" |
|
|
|
|
| |
| |
| |
| |
| for i in 000-126 000-136 000-146 000-156 000-003 000-013 000-023 000-033 000-043 000-053 000-063 000-073 000-083 000-094 000-106 000-117 000-127 000-137 000-147 000-157 000-004 000-014 000-024 000-034 |
| do |
| tar_file="${LOCAL_DIR}/${i}.tar" |
| log_message "\n${GREEN}========================================${NC}" |
| log_message "${GREEN}Processing: ${i}.tar${NC}" |
| log_message "${GREEN}========================================${NC}" |
|
|
| |
| if [ ! -f "$tar_file" ]; then |
| log_message "${YELLOW}File ${i}.tar doesn't exist yet, waiting for creation...${NC}" |
| if ! wait_for_file "$tar_file"; then |
| log_message "${RED}Skipping ${i}.tar - file was not created within timeout${NC}" |
| continue |
| fi |
| fi |
|
|
| |
| if is_file_stable "$tar_file"; then |
| |
| file_size=$(stat -f%z "$tar_file" 2>/dev/null || stat -c%s "$tar_file" 2>/dev/null) |
| file_size_mb=$((file_size / 1048576)) |
|
|
| log_message "${GREEN}Uploading ${i}.tar (${file_size_mb} MB) to Hugging Face...${NC}" |
|
|
| |
| max_retries=3 |
| retry_count=0 |
| upload_success=false |
|
|
| while [ $retry_count -lt $max_retries ] && [ "$upload_success" = false ]; do |
| if huggingface-cli upload "$REPO_ID" "$tar_file" "${i}.tar" --repo-type="$REPO_TYPE"; then |
| log_message "${GREEN}✓ Successfully uploaded ${i}.tar${NC}" |
| upload_success=true |
|
|
| |
| |
| |
| else |
| retry_count=$((retry_count + 1)) |
| log_message "${RED}Upload failed for ${i}.tar (attempt $retry_count/$max_retries)${NC}" |
| if [ $retry_count -lt $max_retries ]; then |
| log_message "Retrying in 30 seconds..." |
| sleep 30 |
| fi |
| fi |
| done |
|
|
| if [ "$upload_success" = false ]; then |
| log_message "${RED}✗ Failed to upload ${i}.tar after $max_retries attempts${NC}" |
| fi |
| else |
| log_message "${RED}File stability check failed for ${i}.tar${NC}" |
| fi |
|
|
| log_message "${GREEN}Completed processing ${i}.tar${NC}" |
| done |
|
|
| log_message "\n${GREEN}=== All files processed ===${NC}" |
| log_message "Check $LOG_FILE for detailed logs" |
|
|