- A+
所属分类:linux技术
#!/bin/bash # Author: [王思扬] # Description: [Used to replace multiple files in the program.] start_time=$(date +%s) # Directory for storing new files, backup files and program directory NewFileDir=/home/test/new/ BacKFileDir=/home/test/bak/ ProDir=/home/test/program # Set colors for text GREEN=' 33[0;32m' YELLOW=' 33[1;33m' RED=' 33[0;31m' NC=' 33[0m' # No Color # Backup function backup() { # Create backup directory with current date mkdir -p $BacKFileDir$(date +%F) &>/dev/null echo -e "${GREEN}Backup directory created successfully.${NC}" # Copy each new file to backup directory for i in $(ls $NewFileDir); do cp -f $(find $ProDir -name $i) $BacKFileDir$(date +%F) &>/dev/null echo -e "${GREEN}File $i backed up successfully.${NC}" done } # Update function update() { files=($(ls $NewFileDir)) for i in "${files[@]}"; do paths=($(find $ProDir -name $i)) for path in "${paths[@]}"; do cp -f $NewFileDir$i $path if [ $? -eq 0 ]; then echo -e "${GREEN}File $i updated successfully.${NC}" fi done done } # Rollback function rollback() { # Find backup directory with current date backupDir=$BacKFileDir$(date +%F) if [ -d $backupDir ]; then for i in $(ls $backupDir); do find $ProDir -name $i | while read path; do cp -f $backupDir/$i $path if [ $? -eq 0 ]; then echo -e "${GREEN}File $i rolled back successfully.${NC}" fi done done fi } # Main function while :; do echo -e "${YELLOW}Please select an operation:${NC}" echo -e "${YELLOW} 1. Backup${NC}" echo -e "${YELLOW} 2. Update${NC}" echo -e "${YELLOW} 3. Rollback${NC}" echo -e "${YELLOW} 4. Quit${NC}" read -r -p "$(echo -e ${YELLOW}Enter your choice:${NC} )" choice case $choice in 1) backup ;; 2) update ;; 3) rollback ;; 4) echo -e "${YELLOW}Goodbye!${NC}" exit 0 ;; *) echo -e "${RED}Invalid choice, please try again.${NC}" ;; esac done end_time=$(date +%s) echo "Script completed in $(($end_time - $start_time)) seconds."