v3.0.1
This commit is contained in:
parent
bc62d99054
commit
8374b03834
@ -1,8 +1,9 @@
|
|||||||
# 7zip_to_netapp_v2.ps1
|
# 7zip_to_netapp.ps1
|
||||||
# Author: F. Bischof (info@meer-web.nl)
|
# Author: F. Bischof (info@meer-web.nl)
|
||||||
# Version 2.6.0
|
# Version 3.0.1
|
||||||
|
|
||||||
# Set global vars
|
# Set global vars
|
||||||
|
$MAX_FOLDER_SIZE = "500GB"
|
||||||
$TIMESTAMP = Get-Date -Format "yyyyMMddHHmm"
|
$TIMESTAMP = Get-Date -Format "yyyyMMddHHmm"
|
||||||
$TARGET_FILENAME = "${TIMESTAMP}-archive.7z"
|
$TARGET_FILENAME = "${TIMESTAMP}-archive.7z"
|
||||||
$CSVFILE = "C:\Scripts\movethis.csv"
|
$CSVFILE = "C:\Scripts\movethis.csv"
|
||||||
@ -66,14 +67,38 @@ foreach ($SOURCE_ENTRY in $CSVFILE) {
|
|||||||
WRITELOG "TARGET variable is empty! Please check the CSV file. Exiting..."
|
WRITELOG "TARGET variable is empty! Please check the CSV file. Exiting..."
|
||||||
exit
|
exit
|
||||||
}
|
}
|
||||||
|
|
||||||
WRITELOG "Archiving: $COUNTER - $SOURCE"
|
WRITELOG "Archiving: $COUNTER - $SOURCE"
|
||||||
Write-Output "Archiving $SOURCE"
|
Write-Output "Archiving $SOURCE"
|
||||||
|
|
||||||
|
WRITELOG "Calculating folder size of $SOURCE"
|
||||||
|
Write-Output "Calculating folder size of $SOURCE"
|
||||||
|
$SOURCE_SIZE = (Get-ChildItem ${SOURCE} -Recurse| Measure-Object -Property Length -sum).Sum
|
||||||
|
$SOURCE_SIZE_FACTOR = [int]($SOURCE_SIZE / $MAX_FOLDER_SIZE)
|
||||||
|
if ($SOURCE_SIZE_FACTOR -ge 1) {
|
||||||
|
WRITELOG "$SOURCE is too big to compress using 7zip, switching to robocopy."
|
||||||
|
WRITELOG "Mirroring $SOURCE using robocopy"
|
||||||
|
robocopy /MIR ${SOURCE} ${TARGET}
|
||||||
|
$TARGET_SIZE = (Get-ChildItem ${TARGET} -Recurse| Measure-Object -Property Length -sum).Sum
|
||||||
|
if (${SOURCE_SIZE} -ne ${TARGET_SIZE}) {
|
||||||
|
WRITELOG "Source and destination sizes do not match!"; exit
|
||||||
|
} else {
|
||||||
|
WRITELOG "Source and destination sizes match"
|
||||||
|
}
|
||||||
|
WRITELOG "empty $SOURCE"
|
||||||
|
mkdir empty
|
||||||
|
robocopy /MIR empty ${SOURCE}
|
||||||
|
WRITELOG "Rename $SOURCE to "
|
||||||
|
$TEMPFOLDER_DONE = ${SOURCE} + "_is_archived_by_solvinity"
|
||||||
|
Rename-Item ${SOURCE} ${TEMPFOLDER_DONE}
|
||||||
|
WRITELOG "Temp quit on ${SOURCE}"
|
||||||
|
exit
|
||||||
|
} else {
|
||||||
# Create stagefolders which give the state of the source folder
|
# Create stagefolders which give the state of the source folder
|
||||||
Write-Output "Creating stage folder"
|
Write-Output "Creating stage folder"
|
||||||
$TEMPFOLDER_RUNNING = ${SOURCE} + "_being_archived_by_solvinity"
|
$TEMPFOLDER_RUNNING = ${SOURCE} + "_being_archived"
|
||||||
$TEMPFOLDER_DONE = ${SOURCE} + "_is_archived_by_solvinity"
|
$TEMPFOLDER_DONE = ${SOURCE} + "_is_archived"
|
||||||
$TEMPFOLDER_FAILED = ${SOURCE} + "_archived_failed_by_solvinity"
|
$TEMPFOLDER_FAILED = ${SOURCE} + "_archived_failed"
|
||||||
WRITELOG "Creating stage folder $TEMPFOLDER_RUNNING"
|
WRITELOG "Creating stage folder $TEMPFOLDER_RUNNING"
|
||||||
if (!(test-path $TEMPFOLDER_RUNNING)){
|
if (!(test-path $TEMPFOLDER_RUNNING)){
|
||||||
New-Item -ItemType Directory $TEMPFOLDER_RUNNING
|
New-Item -ItemType Directory $TEMPFOLDER_RUNNING
|
||||||
@ -144,4 +169,5 @@ foreach ($SOURCE_ENTRY in $CSVFILE) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
WRITELOG "=========================== Archiving ended ==========================="
|
WRITELOG "=========================== Archiving ended ==========================="
|
@ -1,3 +1,6 @@
|
|||||||
|
## 3.0.1
|
||||||
|
- Added a $MAX_FOLDER_SIZE where if reached it switches to robocopy instead.
|
||||||
|
|
||||||
## 2.6.0
|
## 2.6.0
|
||||||
- Bugfixed CSVFile modification
|
- Bugfixed CSVFile modification
|
||||||
|
|
||||||
|
16
README.md
16
README.md
@ -3,8 +3,20 @@
|
|||||||
This script is used for archiving major data.
|
This script is used for archiving major data.
|
||||||
|
|
||||||
## Requirements
|
## Requirements
|
||||||
The script only needs to know where to find the CSV file which needs to be loaded.
|
The script needs to know where to find the CSV file which needs to be loaded.
|
||||||
This CSV path can be set in the global vars part of the script.
|
This CSV path can be set in the global vars part of the script.
|
||||||
|
- 7zip needs to be installed
|
||||||
|
- robocopy needs to be installed
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
$MAX_FOLDER_SIZE = Max folder size to zip, otherwise switch to robocopy.
|
||||||
|
$TIMESTAMP = Timeformat to use for the logfile
|
||||||
|
$TARGET_FILENAME = Target archive name
|
||||||
|
$CSVFILE = Source CSV file
|
||||||
|
$LOGFILE = Log file
|
||||||
|
$TEMPFOLDER_RUNNING = Source folder name for when archive is running
|
||||||
|
$TEMPFOLDER_DONE = Source folder name for when archive is done
|
||||||
|
$TEMPFOLDER_FAILED = Source folder name for when archive is failed
|
||||||
|
|
||||||
### CSV template
|
### CSV template
|
||||||
Create a CSV file containing the following setup:
|
Create a CSV file containing the following setup:
|
||||||
@ -22,6 +34,6 @@ C:\temp\source_folder,D:\archive\target_folder
|
|||||||
```
|
```
|
||||||
|
|
||||||
## Run script
|
## Run script
|
||||||
> .\7zip_to_netapp_v2.ps1
|
> .\7zip_to_netapp.ps1
|
||||||
|
|
||||||
Just sit back and relax...
|
Just sit back and relax...
|
Loading…
Reference in New Issue
Block a user