Here is an example python script that can be run to specifically backup hosted feature layers from ArcGIS Online to a local drive or network drive on your computer or network. Although not ideal to code in credentials, if it is stored and ran from a secure machine, it can be scheduled to run automatically with Windows Task Scheduler. Alternatively, you can run this script manually and alter it to prompt you for credentials. Thanks to Adam Koelker for presenting the core of this script via YouTube. I adapted to query and loop through a specific set, and added some print statements.
from time import strftime
print (strftime("%c"))
from arcgis.gis import GIS
###Authenticate to ArcGIS Online
gis=GIS("https://yourorganization.maps.arcgis.com","yourUsername","yourPassword")
###Query to for all items to be downloaded. In this case, it's searching for all feature layers marked as authoritative
myFeatureCollections=gis.content.search(query="contentstatus:org_authoritative",item_type="Feature Layer Collection",max_items=1000)
###Output location for downloaded backups
output=r"C:/path/to/output/location"
###Initiate cycle to export, download, and delete backups
for item in myFeatureCollections:
try:
print('Exporting '+str(item.title))
currentItemID=item.itemid
dataitem=gis.content.get(currentItemID)
### Create Backup
tempfile=strftime(dataitem.title+"_backup_%Y%m%d")
dataitem.export(title=tempfile,export_format="File Geodatabase",parameters=None,wait=True)
except:
print("Could not create backup for "+str(item.title)+' ('+str(item.itemid)+')')
pass
try:
### Find and download export
myexport=gis.content.search(tempfile,item_type="File Geodatabase")
fgdb=gis.content.get(myexport[0].itemid)
fgdb.download(save_path=output)
print("Downloaded "+str(fgdb.title)+" to "+output)
except:
print("Could not download export for "+str(myexport[0]))
pass
try:
###Delete export
fgdb.delete()
except:
print("Could not delete export for "+str(fgdb))
pass
print("Script completed at {}".format(strftime("%c")))
EDIT: This query no longer retrieves explicitly hosted feature layers, but also stored web layers. See https://developers.arcgis.com/rest/users-groups-and-items/items-and-item-types.htm for updated item types that can be queried
Hi @NorthSouthGIS, this is exactly what I have been looking for, I currently run a similar script that I've picked up somewhere online in which I need to enter in my credentials, the location to save the data to and the number of hosted feature layers to backup. So this is great.
I have added the script to a notebook in AGOL so that I can schedule it to run when I am away. I've done a test run and everything seems to complete without an issue. However, when I go to check my backup location (D:\Northumberland_PP\Back_ups\Automated_backups) there is nothing there.
You don't happen to have any thoughts on why this might be do you?
Hi Andrew,
Did you ever figure this out? Having the same issue. Tried reversing the backslashes, using a simple Temp folder on my C: drive, using a UNC file path, etc.
Teri
Hi @TeriL, I didn't find a way to get it to work unfortunately and then it dropped off my radar. Perhaps I'll contact ESRI to see if they can advise
Hi @Teri , I contacted ESRI abouth this and they suggested I post on here. See the below.
I have always had issues running it in AGOL, it downloads the files but they actually don't make it to your computers directory, they actually stay in AGOL they fall into your Notebook's Files so it is best to run this on your computer locally through ArcGIS Pro (which uses task scheduler) or just task scheduler. Computer just needs to be on, ArcGIS Pro doest need to be open.
@Nick_Creedon, thanks for this works great.