ΠΡΠΎΡ ΡΠΊΡΠΈΠΏΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ ΠΏΡΠ΅Π΄Π½Π°Π·Π½Π°ΡΠ΅Π½ Π΄Π»Ρ ΠΊΠΎΠ½ΠΊΡΠ΅ΡΠ½ΠΎΠΉ Π·Π°Π΄Π°ΡΠΈ, Π½Π΅ΠΎΠ±Ρ ΠΎΠ΄ΠΈΠΌΠΎΠΉ Π΄Π»Ρ Π½Π°ΡΠ΅Π³ΠΎ ΡΠ΅ΡΠ²Π΅ΡΠ°.
ΠΠ°Π΄Π°ΡΠ°
ΠΠ°ΡΠ° Π·Π°Π΄Π°ΡΠ° β ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, Π² Π΄ΡΡΠ³ΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Ρ ΡΠ°ΠΊΠΎΠΉ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΠΎΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ².
Π‘ΠΊΡΠΈΠΏΡ Π±ΡΠ΄Π΅Ρ Π·Π°ΠΏΡΡΠΊΠ°ΡΡΡΡ Ρ ΡΠ΅Π³ΡΠ»ΡΡΠ½ΡΠΌ ΠΈΠ½ΡΠ΅ΡΠ²Π°Π»ΠΎΠΌ, ΠΈΡΠΊΠ°ΡΡ Π²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ, ΡΠΎΠ·Π΄Π°Π½Π½ΡΠ΅ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅, ΠΈ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°ΡΡ ΠΈΡ Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
Π‘ΠΊΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΠΏΠΎΠ΄Π΄Π΅ΡΠΆΠΈΠ²Π°ΡΡ ΡΡ ΠΆΠ΅ ΡΡΡΡΠΊΡΡΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΎΠ² Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΡΠ»Π΅ ΡΡΠΎΠ³ΠΎ ΠΎΠ½ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ ΠΏΡΠ°Π²Π° Π² ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ.
ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΡΠΊΡΠΈΠΏΡ Π΄ΠΎΠ»ΠΆΠ΅Π½ ΡΠ΄Π°Π»ΠΈΡΡ ΡΠ°ΠΉΠ»Ρ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°.
Shell ΡΠΊΡΠΈΠΏΡ ΡΠ΅Π·Π΅ΡΠ²Π½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ Linux
Π‘ΠΎΠ·Π΄Π°ΠΉΡΠ΅ ΡΠΊΡΠΈΠΏΡ ΠΎΠ±ΠΎΠ»ΠΎΡΠΊΠΈ Π² Π²Π°ΡΠ΅ΠΉ ΡΠΈΡΡΠ΅ΠΌΠ΅ ΠΈ Π΄ΠΎΠ±Π°Π²ΡΡΠ΅ ΡΠΎΠ΄Π΅ΡΠΆΠΈΠΌΠΎΠ΅, ΠΏΠΎΠΊΠ°Π·Π°Π½Π½ΠΎΠ΅ Π½ΠΈΠΆΠ΅.
ΠΠ±Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΡΡ ΠΎΠ΄Π½ΡΠ΅ ΠΈ ΡΠ΅Π»Π΅Π²ΡΠ΅ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ΠΈ Π² Π½ΡΠΆΠ½ΠΎΠΌ ΠΌΠ΅ΡΡΠ΅.
ΠΠΎΡΠ»Π΅ ΡΠΎΡ ΡΠ°Π΅Π½Π΅Π½ΠΈΡ Π½Π΅ Π·Π°Π±ΡΠ΄ΡΡΠ΅ ΡΠ΄Π΅Π»Π°ΡΡ ΡΠΊΡΠΈΠΏΡ ΠΈΡΠΏΠΎΠ»Π½ΡΠ΅ΠΌΡΠΌ:
chmod +x script.sh #!/bin/bash ##################### ΠΏΠ΅ΡΠ΅ΠΌΠ΅Π½Π½ΡΠ΅ ############################# ### Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΏΡΠ°Π²ΠΈΠ»ΡΠ½ΠΎΠ΅ ΠΌΠ΅ΡΡΠΎΠΏΠΎΠ»ΠΎΠΆΠ΅Π½ΠΈΠ΅ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° ΠΈ ΠΌΠ΅ΡΡΠ° Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ SOURCE_DIR="/source/dir/" DEST_DIR="/desination/dir/" TMP_FILE=/tmp/copyfileslist.txt ### Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ ΠΈΠΌΡ ΠΏΠΎΠ»ΡΠ·ΠΎΠ²Π°ΡΠ΅Π»Ρ ΠΈ ΠΈΠΌΡ Π³ΡΡΠΏΠΏΡ, ΡΡΠΎΠ±Ρ ΡΡΡΠ°Π½ΠΎΠ²ΠΈΡΡ ΠΏΡΠ°Π²Π° Π½Π° ΡΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½Π½ΡΠ΅ ΡΠ°ΠΉΠ»Ρ
### Π£ΡΡΠ°Π½ΠΎΠ²ΠΈΡΠ΅ Π΄Π»Ρ CHANGE_OWNERSHIP Π·Π½Π°ΡΠ΅Π½ΠΈΠ΅ 1, ΡΡΠΎΠ±Ρ ΠΈΠ·ΠΌΠ΅Π½ΠΈΡΡ Π²Π»Π°Π΄Π΅Π»ΡΡΠ°, ΠΈΠ»ΠΈ 0, ΡΡΠΎΠ±Ρ Π½Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡΡ Π΅Π³ΠΎ. CHANGE_OWNERSHIP=1 USER='root' GROUP='root' ########### ΠΠ΅ ΡΠ΅Π΄Π°ΠΊΡΠΈΡΡΠΉΡΠ΅, ΠΏΠΎΠΊΠ° Π½Π΅ ΠΏΠΎΡΡΠ΅Π±ΡΠ΅ΡΡΡ ################# ### ΠΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΈΡΡ ΠΎΠ΄Π½ΡΠΉ ΠΊΠ°ΡΠ°Π»ΠΎΠ³
### Π‘ΠΊΡΠΈΠΏΡ ΠΎΡΡΠ°Π½ΠΎΠ²ΠΈΡΡΡ, Π΅ΡΠ»ΠΈ ΠΈΡΡΠΎΡΠ½ΠΈΠΊΠ° Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ if [ -d "${SOURCE_DIR}" ]; then echo "Source directory found" else echo "Source directory not found. Please check above variables are set correctly" echo "script exited" exit 1 fi ### ΠΡΠΎΠ²Π΅ΡΠΊΠ°, ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ Π»ΠΈ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ ### Π‘ΠΊΡΠΈΠΏΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³ Π½Π°Π·Π½Π°ΡΠ΅Π½ΠΈΡ, Π΅ΡΠ»ΠΈ ΠΎΠ½ Π½Π΅ ΡΡΡΠ΅ΡΡΠ²ΡΠ΅Ρ. ### ΠΡΠ»ΠΈ Π½Π΅ ΡΠ΄Π°Π»ΠΎΡΡ ΡΠΎΠ·Π΄Π°ΡΡ ΠΊΠ°ΡΠ°Π»ΠΎΠ³, ΡΠΊΡΠΈΠΏΡ Π±ΡΠ΄Π΅Ρ ΠΏΡΠ΅ΡΠ²Π°Π½ if [ -d "${DEST_DIR}" ]; then echo "Destination directory found, all ok" else echo "Destination directory not found, creating now" mkdir -p "${DEST_DIR}" if [ $? -eq 0 ]; then echo "Successfully created destination directory." else echo "Failed to create destination directory. Script exited" exit 1 fi fi ### ΠΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΠ΅ Π²ΡΠ΅Ρ ΡΠ°ΠΉΠ»ΠΎΠ², Π΄ΠΎΡΡΡΠΏΠ½ΡΡ Π² ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π΅ ### ΠΠΎΡΠ»Π΅ ΡΡΠΏΠ΅ΡΠ½ΠΎΠ³ΠΎ ΠΊΠΎΠΏΠΈΡΠΎΠ²Π°Π½ΠΈΡ ΡΠ°ΠΉΠ»Π° ΡΠΊΡΠΈΠΏΡ ΡΠ΄Π°Π»ΠΈΡ ΠΈΡ ΠΈΠ· ΠΈΡΡ ΠΎΠ΄Π½ΠΎΠ³ΠΎ ΠΊΠ°ΡΠ°Π»ΠΎΠ³Π°. cd "${SOURCE_DIR}" if [ $? -eq 0 ]; then find . -type f > ${TMP_FILE} while read CURRENT_FILE_NAME do cp --parents "${CURRENT_FILE_NAME}" "${DEST_DIR}" if [ $? -eq 0 ]; then echo "File ${CURRENT_FILE_NAME} successfully copied." rm -f "${CURRENT_FILE_NAME}" else echo "File ${CURRENT_FILE_NAME} failed to copy" fi done < ${TMP_FILE} rm -f ${TMP_FILE} fi ## Π£ΡΡΠ°Π½ΠΎΠ²ΠΊΠ° ΠΏΡΠ°Π² Π½Π° Π½ΠΎΠ²ΡΠ΅ ΡΠ°ΠΉΠ»Ρ if [ ${CHANGE_OWNERSHIP} -eq 1 ]; then sudo chmod 775 -R "${DEST_DIR}" sudo chown ${USER}:${GROUP} -R "${DEST_DIR}" fi ################### ΠΠΎΠ½Π΅Ρ ΡΠΊΡΠΈΠΏΡΠ° ###################################