CloudBerry PowerShell Multipart - cloudberry

I've written a powershell script to upload from a windows system to an Amazon S3 Bucket. The script successfully uploads all files, except those over 5Gb. I have the Cloud Berry Explorer Pro license which allows for multipart upload on files up to 5TB. However there is no flag for multipart on the powershell snapin documentation. Cloudberry support directed me here as they only support the GUI not the powershell snapin. When running my script I get the error
"WARNING: Your proposed upload exceeds the maximum allowed object size (5 Gb)".
So question is, does anyone know if there is a command line option, or another way to enable multipart upload to Amazon S3 using Cloudberry Explorer Pro's Powershell Snapin?

Set-CloudOption UseChunks=true

I'm looking for the same in Powershell.
I believe in GUI, the original chunking mechanism has been depreciated. I have not tested myself, but I assume Powershell option UseChunks=true is still using the old mechanism? If so, files may be split into multiple parts and not automatically recombined when they arrive on S3. The new GUI Multipart Upload facility sorts this all out for you.
Annoyed Cloudberry still advertise Powershell as a component of Explorer (Free & Pro), but don't support it, even for fully paid up PRO support customers.

We did purchase the cloudberry explorer pro license for the native multipart upload capability, but we wanted to automate it. I believe based on their documentation that the old chunk method is deprecated in favor of their new multi-part functionality. We wound up testing the options listed in the powershell documentation. Those options are as follows:
Set-CloudOption -UseChunks -ChunkSizeKB
"Defines a size of chunk in KB; files larger than a chunk will be divided into chunks."
We verified that this was successfully uploading files beyond the 5GB restriction to our S3 bucket. I attempted to get a response from Cloudberry as to whether this was the old Chunking method or the new Multi-Part method, but I was unable to get a straight answer. They confirmed that because we were using pro, this powershell option was supported, but they failed to confirm which option the powershell command was using.
From what I can tell it appears that Cloudberry's legacy chunking mechanism would actually just break the file into individual files and thus would appear in S3 as multiple files. The Chunk Transparency mechanism in Cloudberry Explorer would allow the multiple chunks to appear as a single file in the Cloudberry Explorer GUI only. Since I can see the file as a single file on the S3 side, I'm assuming that the powershell option uses the new Multi-Part functionality and not the legacy Chunking functionality. Again I was not able to confirm this through Cloudberry so it's speculation on my part.
However, I can confirm that using the powershell options above will get you around the 5GB upload limit when using powershell.

Related

Uploading large .bak file to Azure Blob through Powershell

So I am trying to create a powershell script which will upload a large (> 4GB) .Bak file to Azure Blob Storage but currently it is getting hung. This script works with small files which I have been using to test.
Originally the issue I was having was the requirement to have a Content-Length specified (I imagine due its size) so I now calculate the file size of the .bak file (as it varies slightly each week) and pass this through as a request header
I am a total powershell newbie, as well as being very new to Azure blob. (NOTE: I am trying to do this purely in powershell, without relying on other tools such as AzCopy)
Below is my script
Powershell Script
Any help would be greatly appreciated..
There are a few things to check. Since file is big, are you sure it isn't uploading? Have you checked network activity in performance tab of task explorer? AzCopy seems like a good option too that you can use from within Powershell, but if it's not an option in your case, then why not to use native AZ module for Powershell?
I suggest you using Set-AzStorageBlobContent cmdlet to see if it helps. You can find examples at Microsoft docs

Download file from Azure using AzCopy(v8) but only download the one with newest modified time

I am trying to automate a download from Azure using AzCopy(v8). In a blob we have few .zip files with prefix "BuildTools" and following with the time been modified. Currently what we do is hard-coded the /pattern to match the name of the file(newest modified time) in AzCopy command so we can download the latest version.
But I would like the script to automate sort all files with prefix "BuildTools" then only download the file with newest "Last Modified" time.
I have read the document from AzCopy(v8) and know there are flags(/MT, /XN, /XO) which related to "Modified Time" but they are not what I want.
Just wonder if anyone have any ideas on this. Thanks in advance.
if you are open to try preview capabilities i would suggest to enable Blob Verisoning and download the latest. This way you manage the logic or lifecycle on the server side. less code on your end.
Preview Blog on Blob Versioning -
https://learn.microsoft.com/en-us/azure/storage/blobs/versioning-overview?tabs=powershell
(at the moment available in few regions but i guess worth waiting)
Otherwise you can try the file or object properties via the API call which has the last modified date in there. Link below:
https://learn.microsoft.com/en-us/rest/api/storageservices/get-file-properties

How to uncompress rar files using Azure DataFactory

We have a new client, while landing the project we gave them a blob storage for them to leave files so we could later automate and process the information.
The idea is to use Azure Datafactory but we find no way of dealing with .rar files, and even .zip, being it files from windows, are giving us trouble. And since it is the clien giving the .rar format, we wanted to make absolutely sure there is no way to process before asking them to change it, or deploying a databricks or similar service just for the purpose of transforming the file.
Is there any way to get a .rar file from a blob storage, uncompress it, then process it?
I have been looking in posts like this and related official documentation and closest we have come is using ZipDeflate, but it does not seem to fill our requirement.
Thanks in advance!
Data factory compression only supported types are GZip, Deflate, BZip2, and ZipDeflate.
For the Unsupported file types and compression formats, Data Factory provides some workarounds for us:
You can use the extensibility features of Azure Data Factory to transform files that aren't supported. Two options include Azure Functions and custom tasks by using Azure Batch.
You can see a sample that uses an Azure function to extract the contents of a tar file. For more information, see Azure Functions activity.
You can also build this functionality using a custom dotnet activity. Further information is available here.
Next way, you may need to figure out how to using Azure function to extract the contents of a rar file.
you can use logic apps
you can use webhook activity calling a runbook
both are easiee than using a custom activity

Is there a file size limitation with Powershell Compress-Archive Zip using Windows Server 2016?

I read a bunch of websites (included stack overflow posts and Microsoft website) about the file size limitation of 2GB
Microsoft Docs: Compress-Archive
"The Compress-Archive cmdlet uses the Microsoft .NET API
System.IO.Compression.ZipArchive to compress files. The maximum file
size is 2 GB because there's a limitation of the underlying API."
I have a PowerShell script to backup my Azure DevOPS projects using the Azure DevOPS RestAPI 5.0.
I download all my projects directly in zip format with the RestAPI then i use Compress-Archive to consolidate all the zipped projects into 1 "big" zip file
My total zipped projects files all together is equal to 5.19GB
After compressing to 1 big zip file with Compress-Archive, i got a zip file size of 5.14GB
I don't have any issue to uncompress it and I don't get any error although the 2GB limitation on the documentation.
I wonder if it's because i'm using Windows Server 2016 (so 64bits) so I don't have the 2GB file size limitation?
Anyone can confirm that? As the Microsoft documentation doesn't specify anything about it.
Indeed, they stipulate that the issue is due to the API limitation of System.IO.Compression
Microsoft Docs: system.io.compression.ziparchive
As my zip will continue to grow, i would like to be sure that the zip won't be corrupted due to a file size limitation.
I can indeed use a 3rd-party library like Zip64, 7Zip, ... but i would like to only use the built-in compress method from PS/.Net
The 2GB limitation is for single Files inside the zip.
For example, if you try to Expand a .zip with an 2.1GB file inside it, it will trow an error.

upload 80GB file to azure blob storage

I am looking for a utility to upload an 80 GB file (a VHD) to Azure blob storage. I have tried Azure Management Studio from Cerebrata which is a good tool, but the upload keeps failing. I tried Azure Storage Explorer also, without success. My internet provider is ATT Uverse and I get 16 Mpbs down and 1.4 Mbps up according to speedtest.net. This should be enough to upload the file in a few days, if my math is correct.
81,920 MB
1.4 Mbps= .175 MB/s
5.4 days
Is there a way to break a file into pieces and upload in parts to azure blob storage? Am I going to have to write my own C# client to upload the file? I could do this, but I was hoping to find a good tool that would do it for me.
Did you tried AzCopy tool? This tool is very fast. Check here :
http://blogs.msdn.com/b/windowsazurestorage/archive/2012/12/03/azcopy-uploading-downloading-files-for-windows-azure-blobs.aspx
If that doesn't work, you have to write code to split the file and upload it.
You can take help of the below code :
http://tuvianblog.com/2011/06/28/how-to-upload-large-size-fileblob-to-azure-storage-using-asp-netc/
You might want to check out this post: Uploading a file in Azure Blob Storage.
It explains how you can upload any file to Blob storage with a PowerShell script.
I take it you've tried using the Azure Powershell to do it? the Add-AzureVhd command?
For more info check this out:
http://www.windowsazure.com/en-us/manage/windows/common-tasks/upload-a-vhd/
Having said all this, I've tried to upload a 57GB vhd using this method and it keeps failing after about 40 mins or so, so I'm constantly having to resume the process. It worked fine 1st time for a test 20MB vhd I created though.
UDPATE: I got it to work eventually though powershell, the problem for me was the vhd file I was trying to upload, not the process I was using.

Resources