🐧 Linux (Bash): Массовое Переименование + Журнал
Этот Bash-скрипт массово переименовывает файлы, добавляя префикс и создавая простой лог.
▪️ Скрипт (rename_files.sh):
Bash
▪️ Как использовать:
Сохраните как rename_files.sh и дайте права на выполнение: chmod +x rename_files.sh
Запустите: ./rename_files.sh /path/to/my/files "ARCHIVE_"
/path/to/my/files — директория.
"ARCHIVE_" — префикс.
📌 Важно для отката в Bash:
В отличие от PowerShell, в Bash нет встроенной команды для отката на основе лога mv. Для отката вам нужно будет вручную проанализировать созданный rename_log_*.txt и выполнить обратные команды mv.
Bash
# Пример записи из лога:
# SUCCESS: 'old_file.txt' -> 'NEW_old_file.txt'
# Команда для отката:
mv /path/to/files/NEW_old_file.txt /path/to/files/old_file.txt
Это демонстрирует, почему PowerShell часто предпочтительнее для сложных операций, где требуется атомарность и лёгкость отката.
#powershell #bash #скрипты #automation #files #sysadmin
Этот Bash-скрипт массово переименовывает файлы, добавляя префикс и создавая простой лог.
▪️ Скрипт (rename_files.sh):
Bash
#!/bin/bash
# Путь к директории (по умолчанию - текущая)
TARGET_DIR="${1:-.}"
# Префикс для новых имен
PREFIX="${2:-NEW_}"
# Файл для журнала
LOG_FILE="${TARGET_DIR}/rename_log_$(date +%Y%m%d%H%M%S).txt"
echo "Начинаем переименование файлов в '${TARGET_DIR}' с префиксом '${PREFIX}'..."
echo "Журнал будет сохранен в '${LOG_FILE}'"
echo "--- Переименование файлов ---" > "${LOG_FILE}"
find "${TARGET_DIR}" -maxdepth 1 -type f | while read -r old_path; do
old_name=$(basename "$old_path")
new_name="${PREFIX}${old_name}"
new_path=$(dirname "$old_path")/"$new_name"
if mv -v "$old_path" "$new_path"; then
echo "Переименовано: '$old_name' -> '$new_name'"
echo "$(date +%Y-%m-%d\ %H:%M:%S) SUCCESS: '$old_name' -> '$new_name'" >> "${LOG_FILE}"
else
echo "Ошибка при переименовании: '$old_name'"
echo "$(date +%Y-%m-%d\ %H:%M:%S) FAILED: '$old_name'" >> "${LOG_FILE}"
fi
done
echo "Переименование завершено. Журнал в '${LOG_FILE}'"
echo "--- Конец журнала ---" >> "${LOG_FILE}"
▪️ Как использовать:
Сохраните как rename_files.sh и дайте права на выполнение: chmod +x rename_files.sh
Запустите: ./rename_files.sh /path/to/my/files "ARCHIVE_"
/path/to/my/files — директория.
"ARCHIVE_" — префикс.
📌 Важно для отката в Bash:
В отличие от PowerShell, в Bash нет встроенной команды для отката на основе лога mv. Для отката вам нужно будет вручную проанализировать созданный rename_log_*.txt и выполнить обратные команды mv.
Bash
`# Пример записи из лога:
# SUCCESS: 'old_file.txt' -> 'NEW_old_file.txt'
# Команда для отката:
mv /path/to/files/NEW_old_file.txt /path/to/files/old_file.txt
`Это демонстрирует, почему PowerShell часто предпочтительнее для сложных операций, где требуется атомарность и лёгкость отката.
#powershell #bash #скрипты #automation #files #sysadmin
🔥2
🪟 Windows: Robocopy — копируем файлы как бессмертные 📂
Копируешь 500 ГБ через проводник (Ctrl+C -> Ctrl+V)?
Ошибка сети — и начинай сначала.
Проводник — для пользователей.
Админы используют Robocopy.
Это встроенная утилита, которая умеет возобновлять загрузку после обрыва и копировать в многопоточном режиме.
Команда:
Разбор флагов (чтобы ты понимал суть):
Итог: Самый надежный способ перенести данные между серверами.
#windows #backup #robocopy #cmd #sysadmin #migration #files
Копируешь 500 ГБ через проводник (Ctrl+C -> Ctrl+V)?
Ошибка сети — и начинай сначала.
Проводник — для пользователей.
Админы используют Robocopy.
Это встроенная утилита, которая умеет возобновлять загрузку после обрыва и копировать в многопоточном режиме.
Команда:
robocopy "C:\Source" "\\Server\Backup" /E /Z /MT:32 /R:5 /W:5
Разбор флагов (чтобы ты понимал суть):
/E — копировать все подпапки (даже пустые).
/Z — Режим возобновления. Если сеть упала, он продолжит с того же места, а не сначала.
/MT:32 — Скорость. Копировать в 32 потока одновременно (как торрент).
/R:5 /W:5 — Если файл занят, пробовать 5 раз с паузой 5 секунд (а не висеть вечно).
Итог: Самый надежный способ перенести данные между серверами.
#windows #backup #robocopy #cmd #sysadmin #migration #files
❤2🔥2✍1
📁 Windows: Проверяем, кто заблокировал файл через PowerShell
Знакомая боль: пытаешься удалить лог или переместить папку, а Windows выдает издевательское «Файл открыт в другой программе». И сидишь гадаешь — то ли это антивирус, то ли забытая сессия коллеги, то ли сам сервер решил придержать файл «на память».
Скрипт для поиска «виновника» (запускай от админа):
Инструменты админа стали точнее. Не нужно сносить дерево, если мешает одна ветка.
#windows #powershell #troubleshooting #sysadmin #files #admin_future
Знакомая боль: пытаешься удалить лог или переместить папку, а Windows выдает издевательское «Файл открыт в другой программе». И сидишь гадаешь — то ли это антивирус, то ли забытая сессия коллеги, то ли сам сервер решил придержать файл «на память».
Раньше мы качали Unlocker или Process Explorer, но в 2026-м всё, что нам нужно, уже есть в системе.
Скрипт для поиска «виновника» (запускай от админа):
# Ищем процесс, который держит файл (замените путь на свой)
$LockedFile = "C:\inetpub\logs\LogFiles\u_ex260401.log"
Get-Process | Where-Object {
$_.Modules.FileName -contains $LockedFile -or $_.HandleCount -gt 0
} | Select-Object Name, Id, Description | Format-Table -AutoSize
Примечание: Если файл заблокирован системой, используйте команду `handle.exe` из пакета Sysinternals — это база.
Чтобы не гадать и не ребутать весь сервер ради одного файла. Часто виновником оказывается зависший агент бэкапа или старая сессия PowerShell, которую вы сами же забыли закрыть. Пять секунд — и вы знаете, какой PID нужно «прибить».
Инструменты админа стали точнее. Не нужно сносить дерево, если мешает одна ветка.
#windows #powershell #troubleshooting #sysadmin #files #admin_future
❤2✍1